我有这个程序,我想知道如何在PL / SQL中执行它。有人可以帮助我吗?
create or replace PROCEDURE "P_TEST"
(
c$inchidere IN OUT softys.pk_utils.GenericCursor,
p_OLD IN empl.code%type,
p_NEW IN empl.code%type,
p_NXT IN empl.code%type,
p_ORGID IN empl.ORGID%type
)
is
begin
open c$inchidere for
select
...
end
答案 0 :(得分:1)
在PL / SQL中调用过程很简单。棘手的部分是阅读REF CURSOR。我们需要将其提取到变量或记录类型,匹配已执行查询的投影。您的代码使用名为softys.pk_utils.GenericCursor
的内容会让我觉得您可能会遇到问题。
无论如何,这个例子假设结果集返回一个数字列。您需要调整目标变量以匹配实际投影。
declare
rc sys_refcursor;
l_id number;
begin
P_TEST (
c$inchidere => rc,
p_OLD => 'whatever',
p_NEW => 'meh',
p_NXT => 'ABC',
p_ORGID => 123456 );
loop
fetch rc into l_id;
exit when rc%notfound;
end loop;
end;
不确定为什么ref cursor参数被定义为IN OUT。当你立即打开它时,它只需要OUT。