【发布时间】:2015-11-24 15:46:48
【问题描述】:
我有 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;
【问题讨论】:
-
你先调用哪个函数?
-
这些函数除了互相调用还有什么作用?
-
首先我将调用 function1 并使用其他一些定义的表作为输入(假设 table1)。并在调用 function2 并将 function2 的输出作为 function1 的输入之后
-
很难解释他们到底做了什么,首先是从function2中查找基于id帐户的层次结构/树,然后function2根据function1输出搜索其他一些东西
-
当然在function1里面是一个消除之前处理过的账户的条件