我知道如果这种情况是可以的:
type rc is ref cursor;
cur rc;
v_sql varchar2(2000):='begin :Result=select * from tabName;end;';
.....
execute immediate v_sql using rc;这是生成一个结果集传出是可以的,
但是如果作为一参数传入是不是可行的呢?例如:
v_sql varchar2(2000):='declare cc rc;begin cc:=:1;....end;';
.....
execute immediate v_sql using rc;这种情况可行吗?哪位高手指点一下,谢谢。

解决方案 »

  1.   

    的确可以:declare
      type trc is ref cursor;
      rc     trc;
      rc1    trc;
      n      number;
      v_sql  varchar2(2000) := 'begin open :Result for select deptno from scott.emp;end;';
      v_sql1 varchar2(2000) := 'declare type trc is ref cursor;n number; cc trc;begin cc:=:1; loop
       fetch cc into n;
       exit when cc%notfound;
      dbms_output.put_line(n);
      end loop; end;';
    begin
      execute immediate v_sql
        using rc;  /* loop
       fetch rc into n;
       exit when rc%notfound;
      dbms_output.put_line(n);
      end loop;*/  execute immediate v_sql1
        using rc;
    end;