比如A是个变量,表示列名,要实现select A into B(变量) from t where ....应该怎么写,如果直接写,查出的值就为A了。

解决方案 »

  1.   

    列名不能使用变量的,要实现你说的功能 只能是动态拼sql了 整个sql都是变量的模式
      

  2.   

    --使用动态SQL实现
    declare
       a varchar2(10) := 'col1'; --col1是列名
       b varchar2(20);
    begin
       execute immediate 'select '||a||' from t where rownum<2' into b;
       dbms_output.put_line('b is:'||b);
    end;
    /
      

  3.   

    你也可以用一个存储过程来做,两个in参数,一个传递表名,一个传递列名,当然可以是多个列,按照你的需求;
    在过程中,使用老兵写的那样,拼接实现动态sql查询