如何解决我该如何从%ROWTYPE表中选择要反射的数据?
declare
cursor cur0 is Select no,date from data123;
TYPE TempTabTyp0 is table of cur0%ROWTYPE index by pls_integer;
temp_tab0 TempTabTyp0;
lrc sys_refcursor;
BEGIN
open cur0;
fetch cur0 bulk collect into temp_tab0;
close cur0;
for rec in 1 .. temp_tab0.count loop
temp_tab0(rec).no := 'new value' || temp_tab0(rec).no;
end loop;
open lrc for select * from table(temp_tab0);
END;
如何将数据从temp_tab0发送到sys_refcursor(或另一个游标)?
解决方法
只需将您的代码包装在一个包中。像这样:
create table data123 (no,dt) as
select cast ('abc' as varchar2 (30)),date'2020-09-20' from dual
/
create or replace package pack1 as
cursor cur0 is select no,dt from data123;
type TempTabTyp0 is table of cur0%rowtype index by pls_integer;
procedure getcur (rc out sys_refcursor);
end;
/
create or replace package body pack1 as
procedure getcur (rc out sys_refcursor) is
temp_tab0 TempTabTyp0;
begin
open cur0;
fetch cur0 bulk collect into temp_tab0;
close cur0;
for i in 1..temp_tab0.count loop
temp_tab0(i).no := 'new value '||temp_tab0(i).no;
end loop;
open rc for select * from table (temp_tab0);
end;
end;
/
执行和结果:
var rc refcursor
exec pack1.getcur (:rc)
ATTR_1 ATTR_2
------------------------------ -------------------
new value abc 2020-09-20 00:00:00
不正确的输出标题的PS,请参见this topic。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。