最近参与一个数据库迁移的项目,碰到一个变态的问题。
在oracle下,
通常我们从存储过程里返回结果集到调用程序是使用cursor。
例如open mycur for select * from table1;如果sql语句是动态的怎么办呢?open mycur for execute immediate 'select * from table1';  ????
编译通不过。晕倒。请教如何返回动态语句产生的结果集??

解决方案 »

  1.   

    open mycur for 'select * from tablel';
    可以这样试试吧!!
      

  2.   

    把整個代碼都用字符串代替例
     DECLARE STR  VARCHAR2(500)
     STR:='SELECT * FROM TABLEL';
     EXECUTE IMMEDIATE ' OPEN MYCUR FOR  '||STR;
      

  3.   

    declare 
      TYPE refcurtyp IS REF CURSOR;
       c         refcurtyp;
    begin
       open c for 'select * from table1';
    loop
    fetch c into .....;
    exit when c%notfound;
    .....
    end loop;
      

  4.   

    to lcg412(程序人生) :字符串里声明的变量,怎么获得它的值呢?因为通常我们是把游标作为输出参数传回去的。