循环游标抛出未定义游标的错误 [英] Looping cursor throws error that cursor is not defined

查看:82
本文介绍了循环游标抛出未定义游标的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<块引用>

我想循环存储过程的结果.我的代码:

设置 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆