我写了一段存储过程,其中cursor的select语句中的表名我希望是一个参数,但是写出来编译总是通不过。procedure p_tjj (lv_table)cursor cur_nsr is select nsr from lv_table begin
……
end;lv_table就是我要用的变量。

解决方案 »

  1.   

    使用动态游标
    procedure p_tjj (lv_table)
    AS
        cur SYS_REFCURSOR; 
        sSql varchar(255);
    BEGIN
         sSql:='select * from '||lv_table;
         OPEN cur FOR sSql;
      

  2.   

    动态语句当然要用动态游标ref cursor
    procedure   p_tjj   (lv_table) 
    AS 
            type cur is ref cursor;
            mycur cur;  
            sSql   varchar(255); 
    BEGIN 
              sSql:= "select   *   from   " ¦ ¦lv_table; 
              OPEN   mycursor FOR   sSql;
    END;