Snowfun

导航

 

 

CREATE OR REPLACE PROCEDURE STG.FP_CHECK_IN_DATA(EXITCODE OUT NUMBER)
AS
   /***********************************************************************
    **  存储过程详细说明
    **  存储过程名称:  FP_CHECK_IN_DATA
    **  存储过程创建日期: 2016/08/25
    **  存储过程创建人: 谭湘
    **  目的:  检查STG IN表是否有数据,如果没有数据则报错
    **  输入参数:
    **  输出参数: EXITCODE: 0=Success/1=Failure
    **  返回值:
    **  用法:
    **
    ** 修订版本:
    **  版本号     修订时间    修订人        描述
    **  ---------  ----------  ------------  ------------------------
    **    1.0      2016/08/25  ***    1. 新建存储过程.
    **
   **********************************************************************/

   ----------------------- 以下定义存储过程使用的变量---------------------------------
   V_PKGName       VARCHAR2 (40) := 'PKG_FP';
   V_ProName       VARCHAR2 (40) := 'FP_CHECK_IN_DATA';
   V_Action        VARCHAR2 (1);
   V_Step          VARCHAR2 (40);
   V_MainTable     VARCHAR2 (40);
   V_StartDate     DATE;
   V_EndDate       DATE;
   V_Count         NUMBER := 0;
   V_CheckResult   BOOLEAN := TRUE;
   E_ErrMessage    VARCHAR2 (2000);
----------------------- 以下是存储过程的主体------------------------------------------

BEGIN
   EXITCODE := 0;
   V_Step := 1;
   V_Action := 'S';

   FOR C_SQL
      IN (SELECT    'SELECT '''
                 || TABLE_NAME
                 || ''' TABLENAME,  COUNT(*) RC FROM '
                 || TABLE_NAME
                    TEXT
            FROM USER_TABLES
           WHERE TABLE_NAME IN
                    ('IN_BOM_DETAILS',
                     'IN_BOM_HEADER',
                     'IN_CUSTOMER',
                     'IN_INVENTORY',
                     'IN_ITEM',
                     'IN_ITEM_SITE',
                     'IN_ITEMBOMROUTING',
                     'IN_MO_SHORT',
                     'IN_PO',
                     'IN_ROUTING_HEADER',
                     'IN_ROUTINGOPERATION',
                     'IN_SALES_ORDER',
                     'IN_SFCHEADER',
                     'IN_SFCLINE',
                     'IN_SUPPLIER',
                     'IN_SUPPLIER_ITEM',
                     'IN_UOMCONVERSION',
                     'TEMP_ITEM_WITHOUT_SUPPLIER'))
   LOOP
      EXECUTE IMMEDIATE c_sql.TEXT INTO V_MainTable, V_Count;

      PKG_UTIL.CREATELOG (V_PKGName,
                          V_ProName,
                          V_Step,
                          V_Action,
                          PKG_CONSTANT.CONS_MSG_INFO,
                          'Check Data Rows Count: ' || V_Count,
                          V_MainTable);

      IF V_COUNT = 0
      THEN
         V_CHECKRESULT := FALSE;
      END IF;
   END LOOP;

   IF V_CHECKRESULT = FALSE
   THEN
      EXITCODE := 1;
   END IF;
EXCEPTION
   --总程序异常处理部分
   WHEN OTHERS
   THEN
      BEGIN
         ROLLBACK;
         EXITCODE := 1;
         V_MainTable := '';
         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;
/

 

posted on 2016-12-06 12:09  Snowfun  阅读(204)  评论(0)    收藏  举报