递归运行函数

时间:2015-11-24 15:46:48

标签: function plsql

我有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;

1 个答案:

答案 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;