循环游标抛出未定义游标的错误 [英] Looping cursor throws error that cursor is not defined
本文介绍了循环游标抛出未定义游标的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想循环存储过程的结果.我的代码:
设置 serveroutput onVAR c_curs refcursor;执行 pck_prov.get_value_type_list(1, :c_curs);开始FOR record_test IN c_curs LOOPdbms_output.put_line(record_test.id);结束循环;结尾;
我不明白为什么这会抛出必须声明 c_curs 的错误:
<块引用><块引用>从第 7 行开始出错 - BEGIN
FOR record_test IN c_curs LOOPdbms_output.put_line(record_test.id);结束循环;
结束;
错误报告 -
ORA-06550:第 2 行,第 24 列:
PLS-00201:必须声明标识符C_CURS"
解决方案
游标可以在PL/SQL块中被引用如下:
设置 serveroutput on宣布c_curs SYS_REFCURSOR;v_id 编号;开始pck_prov.get_value_type_list (1, c_curs);-->程序在这里调用环形取回 c_cursINTO v_id;退出时 c_curs%NOTFOUND;DBMS_OUTPUT.PUT_LINE(v_id);结束循环;关闭 c_curs;结尾;/
I want to loop results from stored procedure. My code:
set serveroutput on
VAR c_curs refcursor;
EXECUTE pck_prov.get_value_type_list(1, :c_curs);
BEGIN
FOR record_test IN c_curs LOOP
dbms_output.put_line(record_test.id);
END LOOP;
END;
I don't understand why this is throwing error that c_curs must be declared:
Error starting at line : 7 in command - BEGIN
FOR record_test IN c_curs LOOP dbms_output.put_line(record_test.id); END LOOP;
END;
Error report -ORA-06550: line 2, column 24:
PLS-00201: identifier 'C_CURS' must be declared
解决方案
The cursor can be reference in a PL/SQL block as follows:
set serveroutput on
DECLARE
c_curs SYS_REFCURSOR;
v_id NUMBER;
BEGIN
pck_prov.get_value_type_list (1, c_curs); --> procedure called here
LOOP
FETCH c_curs
INTO v_id;
EXIT WHEN c_curs%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_id);
END LOOP;
CLOSE c_curs;
END;
/
这篇关于循环游标抛出未定义游标的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文