declare
in_str  varchar2(200);
in_str1 varchar2(200);
begin
    in_str:='12345';
    in_str1:='in_str';
    
end;代码如上,如何通过字符变量in_str1获得in_str的内容?oracle sql eval

解决方案 »

  1.   

    你把''引号去掉就好了啊
    declare
    in_str  varchar2(200);
    in_str1 varchar2(200);
    begin
        in_str:='12345';
        in_str1:=in_str;
        DBMS_OUTPUT.PUT_LINE(in_str1);
    end;SQL> 12345PL/SQL procedure successfully completed
      

  2.   

    我的SQL是这样的,select * from flow_data_header where rid='$P{in_task_id}',此SQL运行时,$P{in_task_id}要用变量in_task_id的值替换的
      

  3.   

    其中,in_task_id是存储过程中的变量
      

  4.   

    了解,用动态sql吧
    execute immediate 'select columnA,columnB from flow_data_header where rid=:1'
    using in_task_id
    returning into *****(预定义的变量).
    如果你就是要用*就可以预定义一个游标变量,然后 
    open cursor1 for
    'select columnA,columnB from flow_data_header where rid=:1'
    using in_task_id
    loop
    fetch into...
    dbms_output.put_line;
    end loop;
    close cursor1;
      

  5.   

    这个时候,还不知道是变量in_task_id,只有解析了$P{...}之后,才知道变量的名称,using in_task_id必须动态才行。其实,我想要的效果就是相当于js中的eval函数,通过调用eval(in_str1),得到in_str的内容:'12345'