我是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)
请帮忙.
您需要将其声明为引用游标,然后为您的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