我想 动态地在过程主体内 创建 游标, 我也必须使用 for循环 而不是下面的代码。我做了动态光标,但我不能使用for循环。
PROCEDURE myprocedure AS LV_TEST_CUR SYS_REFCURSOR; LV_QUERY VARCHAR2(200); LV_DATE DATE; BEGIN LV_QUERY:='select sysdate as mydate from dual'; OPEN LV_TEST_CUR FOR LV_QUERY; /*FOR CUR_VAR IN LV_TEST_CUR LOOP dbms_output.put_line(CUR_VAR.mydate); end LOOP; */ LOOP FETCH LV_TEST_CUR INTO LV_DATE; EXIT WHEN LV_TEST_CUR%NOTFOUND; DBMS_OUTPUT.PUT_LINE(LV_DATE); END LOOP; CLOSE LV_TEST_CUR; END myprocedure;
如果我使用注释的代码(用于循环),我会报错
PLS-00221:不是过程或未定义。
是否可以在动态游标中使用for循环?
您不能在游标FOR循环中引用游标变量
但是您可以直接使用选择语句:
create or replace PROCEDURE myprocedure AS LV_TEST_CUR SYS_REFCURSOR; LV_QUERY VARCHAR2(200); LV_DATE DATE; BEGIN FOR CUR_VAR IN (select sysdate as mydate from dual) LOOP dbms_output.put_line(CUR_VAR.mydate); end LOOP; END myprocedure; /