我刚做的,参考下:

SQL> CREATE GLOBAL TEMPORARY TABLE REPROTTEST(

2 ID NUMBER,

3 ANAME VARCHAR2(20)

4 ) ON COMMIT DELETE ROWS;(也可以用PRESERVER ROWS,看实际需求)

Table created

SQL> create or replace procedure report_month_responsibility(

2 o_cur out sys_refcursor)

3 as

4 begin

5 insert into reprottest(id,aname) values(1,'1');

6 open o_cur for select * from reprottest;

7 end report_month_responsibility;

8 /

Procedure created

SQL> set serverout on

SQL> declare

2 v_id number;

3 v_aname varchar2(20);

4 o_cur sys_refcursor;

5 begin

6 report_month_responsibility(o_cur);

7 fetch o_cur into v_id,v_aname;

8 while o_cur%found loop

9 dbms_output.put_line('输出结果:'||v_id||','||v_aname);

10 fetch o_cur into v_id,v_aname;

11 end loop;

12 commit;

13 end;

14 /

输出结果:1,1

PL/SQL procedure successfully completed

你的那个ORA-01031: insufficient privileges,是权限不足的问题。

SQL代码:

CREATE GLOBAL TEMPORARY TABLE REPROTTEST(

ID NUMBER,

ANAME VARCHAR2(20)

) ON COMMIT DELETE ROWS;

create or replace procedure report_month_responsibility(

o_cur out sys_refcursor)

as

begin

insert into reprottest(id,aname) values(1,'1');

open o_cur for select * from reprottest;

end report_month_responsibility;

declare

v_id number;

v_aname varchar2(20);

o_cur sys_refcursor;

begin

report_month_responsibility(o_cur);

fetch o_cur into v_id,v_aname;

while o_cur%found loop

dbms_output.put_line('输出结果:'||v_id||','||v_aname);

fetch o_cur into v_id,v_aname;

end loop;

commit;

end;

/

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐