Oracle PLSQL从变量设置游标

Edd*_*ieb 2 oracle plsql

我是Oracle中游标的新手.我有一个包含在变量中的SQL.我想用这个sql打开一个游标.我该怎么做呢?看起来很简单,但我发现的所有示例都只是在"open cursor_name for"语句的正下方输入了sql.

这是我想要运行的(假设我的sql查询有变量v_sql):

open my_cursor for v_sql;
Run Code Online (Sandbox Code Playgroud)

但甲骨文并不喜欢这样.我也试过了

open my_cursor for 
  execute immediate v_sql;
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Raj*_*thi 5

您需要将其声明为引用游标,然后为您的SQL语句打开它.请看下面的例子.当然,这是假设您没有任何输入绑定到您的SQL.

sql> ed
Wrote file afiedt.buf

  1  declare
  2     c1 sys_refcursor;
  3     v_empno number;
  4     v_ename varchar2(30);
  5  begin
  6    open c1 for 'select empno, ename from emp';
  7    loop
  8      fetch c1 into v_empno, v_ename;
  9      dbms_output.put_line(v_empno || '--' || v_ename);
 10      exit when c1%notfound;
 11    end loop;
 12    close c1;
 13* end;
sql> /
7369--SMITH
7499--ALLEN
7521--WARD
7566--JONES
7654--MARTIN
7698--BLAKE
7782--CLARK
7788--SCOTT
7839--KING
7844--TURNER
7876--ADAMS
7900--JAMES
7902--FORD
7934--MILLER
7934--MILLER
Run Code Online (Sandbox Code Playgroud)

查看此链接... http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10807/11_dynam.htm#i13057