我有2个功能 function1 和 function2 。 现在我想知道如何以递归方式运行它们。
也许我会形容它: function1的输入是来自function2输出的数组表。 function1的输出也是为function2输入的数组表,依此类推。
当function1返回一些值时,function2应该用这些值执行。 当function2返回一些值时,function1应该执行。
应该执行Function1和function2,直到其中一个返回null。是否可以在pl / sql中执行?你能给我一些提示吗?如何正确传达变量?
编辑:
一般情况下应该看起来:
declare
tab2 num_array;
v_Return NUM_ARRAY;
v_Return2 NUM_ARRAY;
BEGIN
select ID bulk collect into tab2 from account;
v_Return := function1(tab2);
if v_return is not null then
v_return2 :=function2(v_return);
--and now iteration:
if v_return2.count>0 then
v_Return := function1(v_return2);
if v_return.count>0 then
v_return2 :=function2(v_return);
if v_return2.count>0 then
v_Return := function1(v_return2);
if v_return..count>0 then
v_return2 :=function2(v_return);
-- and so on
END;
当然我想避免做那样的事情,可以动态吗?
----编辑2
while(num=1)
loop
if v_return.count>0 then
num := 1;
v_return2 :=function2(v_return);
if v_return2.count>0 then
num :=1;
v_Return := function1(v_return2);
else num :=0;
end if;
else num :=0;
end if;
end loop;
END;
答案 0 :(得分:1)
如何使用简单的循环?
loop
v_return2 := function2(v_return);
exit when v_return2.count = 0;
v_return := function1(v_return2);
exit when v_return.count = 0;
end loop;