gpt4 book ai didi

oracle - 如何使用记录循环引用游标?

转载 作者:行者123 更新时间:2023-12-03 02:36:00 24 4
gpt4 key购买 nike

我想编写 PL/SQL 来测试包中的函数。该包定义了一个游标类型

TYPE ref_cursor IS REF CURSOR;

我想根据该类型定义一条记录。

我的代码是:

DECLARE
cur PACKAGE_NAME.ref_cursor;
rec cur%ROWTYPE;

为什么最后一行不正确?

最佳答案

您不能基于弱类型的 REF CURSOR 定义记录类型。由于包中定义的游标类型可用于从具有任意列的任意查询返回数据,因此 PL/SQL 编译器无法确定适当的记录类型来提取数据。

如果您知道从函数返回的实际数据,您可以声明该类型的记录来提取数据。例如,如果我声明一个返回弱类型游标类型的函数,但我知道游标确实返回基于 EMP 表的游标,我可以将数据提取到 EMP 中%ROWTYPE 记录(请注意,SYS_REFCURSOR 是系统定义的弱类型 REF CURSOR 类型)

create or replace function f1
return sys_refcursor
is
l_rc sys_refcursor;
begin
open l_rc
for select *
from emp;
return l_rc;
end;

declare
l_rc sys_refcursor;
l_emp emp%rowtype;
begin
l_rc := f1;
loop
fetch l_rc into l_emp;
exit when l_rc%notfound;
dbms_output.put_line( l_emp.empno );
end loop;
end;

关于oracle - 如何使用记录循环引用游标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9385142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com