我有以下SELECT
声明:
SELECT AUDITORID
FROM SOL.GROUPS WHERE STATUS = 1;
我需要每个返回statemnet的AUDITORID来调用过程INSERT_LD_PER_AUDITOR (VAUDITORID)
怎么做?
答案 0 :(得分:4)
如果您确定要循环,可以使用:
begin
for x in (SELECT AUDITORID FROM SOL.GROUPS WHERE STATUS = 1) loop
INSERT_LD_PER_AUDITOR(x.AUDITORID);
end loop;
end;
但正如sstan所写,重构程序以处理所有数据可能更好。
答案 1 :(得分:0)
你不能通过SQL语句调用过程 而且你至少有两种方法可以解决它。 1)创建pl_sql函数并将调用过程设置为函数
create or replace function F_INSERT_LD_PER_AUDITOR (VAUDITORID NUMBER)
return NUMBER
is
begin
NSERT_LD_PER_AUDITOR (VAUDITORID);
return 0;
end;
/
并将其命名为
SELECT F_INSERT_LD_PER_AUDITOR(AUDITORID)
FROM SOL.GROUPS WHERE STATUS = 1;
2)wirte pl / sql并使用先前评论中的LOOP