【问题标题】:Can one procedure have 2 refcursor?一个程序可以有2个refcursor吗?
【发布时间】:2016-09-21 06:04:53
【问题描述】:

选择多行数据的存储过程

create or replace PROCEDURE tranferdata
(REFCUR OUT SYS_REFCURSOR,REFCUR2 OUT SYS_REFCURSOR)
AS
BEGIN

OPEN REFCUR FOR SELECT  distinct  b.GUARDIAN_ID, c.name,d.PHONE_NUMBER
from
student a,student_guardian b,guardian c,GUARDIAN_CONTACT d
where b.STUDENT_ID=a.student_id
and b.GUARDIAN_ID =c.GUARDIAN_ID
and c.GUARDIAN_ID=d.GUARDIAN_ID;

OPEN REFCUR2 FOR SELECT b.GUARDIAN_ID, c.name,d.PHONE_NUMBER
from
student a,student_guardian b,guardian c,GUARDIAN_CONTACT d, testarif e
where b.STUDENT_ID=a.student_id
and b.GUARDIAN_ID =c.GUARDIAN_ID
and c.GUARDIAN_ID=d.GUARDIAN_ID
and b.GUARDIAN_ID !=e.vv_guardian_id;


END;

匿名块调用过程

SET SERVEROUTPUT ON;
DECLARE
P_CURSOR SYS_REFCURSOR;
P_CURSOR2 SYS_REFCURSOR;
P_id VARCHAR2(100);
P_name VARCHAR2(100);
P_phone_no VARCHAR2(100);

PP_id VARCHAR2(100);
PP_name VARCHAR2(100);
PP_phone_no VARCHAR2(100);


BEGIN

DBMS_OUTPUT.PUT_LINE ('ATAS');

tranferdata(REFCUR,REFCUR2 => P_CURSOR,P_CURSOR2);



DBMS_OUTPUT.PUT_LINE ('BAWAH');

LOOP

FETCH P_CURSOR INTO P_id,P_name,P_phone_no;
insert into testarif(vv_guardian_id,vv_name,vv_phone) values (P_id, P_name, P_phone_no);
EXIT WHEN P_CURSOR%NOTFOUND;


END LOOP;

CLOSE P_CURSOR;


LOOP

FETCH P_CURSOR2 INTO PP_id,PP_name,PP_phone_no;

insert into testarif2(vvv_guardian_id,vvv_name,vvv_phone) values (PP_id, PP_name, PP_phone_no);
EXIT WHEN P_CURSOR2%NOTFOUND;


END LOOP;

CLOSE P_CURSOR2;

END;
/

错误是

ORA-06550:第 17 行,第 13 列:
PLS-00201:必须声明标识符“REFCUR”

ORA-06550:第 17 行,第 1 列:

我找不到哪一个是错误的...

上面的代码对于在一个过程中使用 2 个 refcursor 是否有效?

【问题讨论】:

    标签: sql oracle stored-procedures sys-refcursor


    【解决方案1】:

    您使用了不正确的语法。 只需将tranferdata(REFCUR,REFCUR2 => P_CURSOR,P_CURSOR2); 更改为tranferdata(REFCUR => P_CURSOR, REFCUR2 => P_CURSOR2);

    【讨论】:

      猜你喜欢
      • 2011-09-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多