PLSQL-如何退出FORALL循环

时间:2016-06-09 06:45:37

标签: sql oracle stored-procedures plsql oracle11g

我目前在程序中有以下代码段 apps.fnd_global. apps_initialize方法执行是FORALL循环的一部分。

我想在循环中调用apps.fnd_global. apps_initialize。插入完成后,apps.fnd_global. apps_initialize应该只执行一次。

我该怎么做?

FORALL i IN 1 .. my_array.COUNT
         INSERT
           INTO my_table
            ......
      COMMIT;         

         apps.fnd_request.submit_request (application   => 'PO',
                                          program       => 'REQIMPORT',
                                          argument1     => l_p4,
                                          argument2     => l_p5,
                                          argument3     => l_p6,
                                          argument4     => '',
                                          argument5     => 'N',
                                          argument6     => 'N');
      COMMIT;

2 个答案:

答案 0 :(得分:6)

FORALL不是循环 - 所以你不能退出循环。如果要限制FORALL执行的工作,则需要限制从原始BULK COLLECT返回的数据。

FND_GLOBAL.apps_initialize()设置会话级全局变量。您可以在FORALL子句之前调用它(如果您希望插入使用新的全局值)或之后(如果您只想影响并发程序执行)。

答案 1 :(得分:1)

您可以尝试循环: -

FOR i IN 1 .. my_array.COUNT
   LOOP
       INSERT
       INTO my_table
        ......
   END LOOP;
   commit;      

     apps.fnd_request.submit_request (application   => 'PO',
                                      program       => 'REQIMPORT',
                                      argument1     => l_p4,
                                      argument2     => l_p5,
                                      argument3     => l_p6,
                                      argument4     => '',
                                      argument5     => 'N',
                                      argument6     => 'N');