比如我一个表 product 有两个字段  A ,B
需求是 不确定要显示哪个字段,
所以打算 将字段在外面 获取到之后传到包里面,
如下的 procudure
我建了一个包TEST,包中包含一个方法get_info(v_column in varchar,p_cursor out TEST.cursortype)procedure get_info(v_column in varchar,p_cursor out TEST.cursortype)
as
begin
  open p_cursor for
       select v_column from A;
end;
如果 A和B 都 有的话  v_column 就会传入 A,B
如果 只有 A 的话v_column 就会只传人 A 
但是 这样 C# 还是 报错了 ,请问怎么解决?

解决方案 »

  1.   

    你的语句要动态来执行啦,而不是直接这样呢。
    比如:execute immediate 'select ....;
      

  2.   

    我 是 返回游标类型的 啊,如果 直接在数据库中把 v_COLUMN换成 A 这样 没错的啊 
      

  3.   

    先定义SQL字符串变量,然后 在OPEN 游标语句即可
      

  4.   

    动态拼接sql就可以了
    或是using
      

  5.   

    create or replace procedure get_info(v_column in varchar,p_cursor out sys_refcursor)
    as
    begin
      open p_cursor for  'select '||v_column||' from A';
    end;
      

  6.   


    --最好用存储过程来做,你需要动态SQL来拼接,用动态游标来返回结果:
    create or replace procedure get_info(v_column in varchar,p_cursor out sys_refcursor)
    as
    begin
      open p_cursor for  'select '||v_column||' from A';
    end;
      

  7.   

    动态拼接open p_cursor for 'select '||v_column||'  from A';