过程调用失败,不进行迭代

时间:2012-04-06 07:02:21

标签: oracle plsql

我遇到过程调用问题..例如

MAIN_PROCEDURE_starts
  LOOP
  FOR records_present in Table_test
    Begin
      Call_procedure1
    End
    Begin
      Call_procedure2
    End
    Begin
      Call_procedure3 --this procedure gives an output value
    End
    Begin
      Call_procedure4 --this procedure takes input from output of procedure 3
    End
    Begin
      Call_procedure5
    End
  End loop
End

在这里,我遇到了以下问题:

  1. 如果过程的输出为空,则过程4无法执行,因此其他过程即5不起作用。
  2. 它不是在循环中迭代。如果任何程序失败,它的循环和主程序就会结束。

1 个答案:

答案 0 :(得分:1)

First,对于每次BEGIN....END通话,都没有Procedure的感觉。 如果您对Exception Handling感到担心,请确保您在all程序Call_procedure1,Call_procedure2....中执行相同操作。

Secondly,你说它不是循环迭代,为什么你认为它不是迭代的。它是因为异常而将null值传递给proc 4,这引发了异常,因此程序以异常终止。

Thirdly:请详细说明您的要求,如果output的{​​{1}}为procedure3,您想要做什么?,您想继续或加注吗?例外。如果你没有说明这些条件,那么任何人都很难在这里帮助你。

null:如果你想继续循环,如果任何一个过程失败,那么不要在异常处理部分程序中引发异常。这样你就可以实现迭代,但这很糟糕数据库设计。在Forthly inputoutput的情况下,首先尝试查找您要执行的操作,然后继续。

exception