ORACLE LOOP

执行存储过程后如下:

CREATE OR REPLACE PROCEDURE STG.TESTLOOP(EXITCODE OUT NUMBER)
IS
   /***********************************************************************
         **  存储过程详细说明
    **  存储过程名称:  SAP_SO_QM_CUSTOMER
    **  存储过程创建日期: 2018/03/17
    **  存储过程创建人: landor
    **  目的:  增加后续
    **  输入参数:
    **  输出参数: EXITCODE: 0=Success/1=Failure
    **  返回值:
    **  用法:
    **
    ** 修订版本:
    **  版本号     修订时间    修订人        描述
        **  ---------  ----------  ------------  ------------------------
        **    1.0       2018/03/17    landor 1.新建存储过程
   **********************************************************************/


   V_STEP         NUMBER := 0;
   V_PKGNAME      VARCHAR2 (80) := 'TESTLOOP';
   V_PRONAME      VARCHAR2 (80) := 'TESTLOOP';
   V_ACTION       VARCHAR2 (1);
   V_MAINTABLE    VARCHAR2 (80);
   EXITCODE1      NUMBER := 0;
   e_ErrMessage   VARCHAR2 (3000) := '';



BEGIN
   EXITCODE := 0;

   V_STEP := V_STEP + 1;
   V_ACTION := 'I';
   V_MAINTABLE := 'C_SO';

   FOR C_SO IN ( SELECT * FROM TESTSO  )
   LOOP
     
      UPDATE TESTORDER SET ITEM_ID = ITEM_ID||C_SO.CTYPE
                           ,BOMID = TRIM(TESTORDER.BOMID)||C_SO.CTYPE
      WHERE SO_ID = C_SO.SO_ID
        AND SO_LINE_ID = C_SO.SO_LINE_ID
        AND ITEM_ID NOT LIKE '%C%';
       COMMIT;  
        
           
   END LOOP;
      
EXCEPTION
   --总程序异常处理部分
   WHEN OTHERS
   THEN
      BEGIN
         ROLLBACK;
         EXITCODE := 1;

         e_ErrMessage :=
               e_ErrMessage
            || SUBSTR (SQLERRM, 1, 1000)
            || SUBSTR (DBMS_UTILITY.FORMAT_ERROR_BACKTRACE, 1, 2000);
         PKG_UTIL.CREATELOG (V_PKGNAME,
                             V_PRONAME,
                             V_STEP,
                             V_ACTION,
                             PKG_CONSTANT.CONS_MSG_EXCEPTION,
                             e_ErrMessage,
                             V_MAINTABLE);
      END;
END;
/
原文地址:https://www.cnblogs.com/Snowfun/p/8631483.html