我有一个名为GET_CLIENT_IN_SED(返回sys_refcursor)的函数,它给了我一个id号列表(单列)。现在,在一个过程中,我试图循环遍历每个值(一个接一个),并用它来调用第二个过程(它需要一个客户端ID参数)。Oracle PL/SQL将游标(从函数)中的每个值逐个分配给另一个游标
PROCEDURE GET_ORDINARY_CLIENT;
PROCEDURE GET_ORDINARY_CLIENT_BY_SED
(sed_in IN varchar2, client_sed OUT SYS_REFCURSOR)
IS
ordinary_clients sys_refcursor;
BEGIN
ordinary_clients := GET_CLIENT_IN_SED(sed_in);
for item in ordinary_clients loop
client_sed := client_sed + ordinary_clients(i);
end loop;
END;
批量收集是我喜欢使用的另一种有效方法(我发现使用集合比使用游标更简单!)。虽然最好不要在数据量非常大时使用,因为它存储在变量中而不是迭代器中。 – Dessma
@Dessma您也可以使用批量收集进行迭代。您有限制条款限制数据选择,您可以迭代所有记录 – XING