sat*_*esh 4 sql oracle plsql plsqldeveloper
我想动态地在程序体内创建游标,我也必须使用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;
Run Code Online (Sandbox Code Playgroud)
如果我使用注释代码(for循环),我会收到错误
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;
/
Run Code Online (Sandbox Code Playgroud)