彩信日报取数逻辑

首先调用存储过程  CAMP_IMPORT_TOT_DATA

查看存储过程

show  procedure  CAMP_IMPORT_TOT_DATA

查看结果

show  procedure  CAMP_IMPORT_TOT_DATA

--drop PROCEDURE CAMP_IMPORT_TOT_DATA

--SHOW  PROCEDURE	IPAD_BASE_DATA_IMPORT_TOT_DATA

REPLACE PROCEDURE 
	 CAMP_IMPORT_TOT_DATA
	 (IN DEAL_DATE CHAR(8), IN DAYS INTEGER,OUT RTN INTEGER)
	 BEGIN
	   DECLARE P_DAY_COUNT INTEGER DEFAULT 0;
	   DECLARE P_DATE_TEMP DATE;
	   DECLARE DEAL_DATEF DATE;
	   DECLARE CURDATE_DATA_COUNT INTEGER DEFAULT 0;
	   DECLARE INDI_TIME VARCHAR(50);
	  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
	  BEGIN
	  /**/
	   INSERT INTO IPAD_DATA_ERR_LOG 
	    SELECT ERRORCODE,ERRORTEXT,P_DATE_TEMP,CAST(CURRENT_TIMESTAMP AS VARCHAR(19)) FROM DBC.ERRORMSGS WHERE ERRORCODE = SQLCODE;
	    
	  END;
	
	  UPDATE CAMP_DATA_IS_UPDATE_VW SET IS_UPDATE = '1',OPT_DT = CAST(CURRENT_TIMESTAMP AS VARCHAR(19)) WHERE ID = 1;
	  
	
	  SELECT TRIM(SUBSTRING(DEAL_DATE  FROM 1 FOR 4) || '-' || SUBSTRING(DEAL_DATE  FROM 5 FOR 2) || '-' || SUBSTRING(DEAL_DATE  FROM 7 FOR 2)) INTO :DEAL_DATEF;
	 
	 SET P_DAY_COUNT = DAYS;
	   SET P_DATE_TEMP = DEAL_DATEF - P_DAY_COUNT; 
	   
	   SELECT CAST(CURRENT_TIMESTAMP AS VARCHAR(19)) INTO :INDI_TIME;
	   
 data_loop_label: LOOP
	
	
	  IF P_DAY_COUNT = -1 THEN
	    LEAVE data_loop_label;
	   END IF;
	   
	  DELETE FROM CAMP_C_ALL_MTER_NEW_VW WHERE DEAL_DATE = P_DATE_TEMP;
	   
	   SELECT COUNT(*) INTO :CURDATE_DATA_COUNT FROM CAMP_C_ALL_MTER_NEW_VW WHERE DEAL_DATE = P_DATE_TEMP AND REGION_CODE = '00';
	   
	   INSERT INTO CAMP_C_MART3_DATA_LOG_VW VALUES(P_DATE_TEMP,'当前全省数据:' || TRIM(CURDATE_DATA_COUNT) || '条',INDI_TIME);
	   
	   IF CURDATE_DATA_COUNT < 650 THEN
	    
	    INSERT INTO CAMP_C_ALL_MTER_NEW_VW
	     SELECT DISTINCT * FROM RPTMARTVW3.TB_SMS_VAT_TOT_MTER_DAY A
	      WHERE DEAL_DATE = CAST(P_DATE_TEMP AS DATE)
	      AND CITY_CODE = '00'
	      AND REGION_CODE IS NOT NULL
	      AND ITEM_CODE IS NOT NULL
	      AND DEAL_DATE IS NOT NULL
	      AND ABS(ITEM_VALUE) IN (
	      
	      SELECT MAX(ABS(ITEM_VALUE)) FROM RPTMARTVW3.TB_SMS_VAT_TOT_MTER_DAY
	      WHERE DEAL_DATE = CAST(P_DATE_TEMP AS DATE)
	      AND CITY_CODE = '00'
	      AND REGION_CODE IS NOT NULL
	      AND ITEM_CODE IS NOT NULL
	      AND DEAL_DATE IS NOT NULL
	      AND A.REGION_CODE = REGION_CODE
	      AND A.ITEM_CODE = ITEM_CODE
	      GROUP BY REGION_CODE,CITY_CODE,ITEM_CODE
	      
	      );
	   
	     
	  
	      
	      
	CALL CAMP_DATA_NEATEN_FOR_TRENDS(P_DATE_TEMP,0);
	 /**
	  CALL CAMP_CT_BASE_DATA_IMPORT(DEAL_DATE,0);
	  */
	  SELECT COUNT(*) INTO :CURDATE_DATA_COUNT FROM CAMP_C_ALL_MTER_NEW_VW WHERE DEAL_DATE = P_DATE_TEMP AND REGION_CODE = '00';
	      
	  IF CURDATE_DATA_COUNT = 0 THEN
	   UPDATE CAMP_C_MART3_DATA_LOG_VW SET DATA_INFO = (DATA_INFO || ',数据未到达!')
	   WHERE DATA_DATE = P_DATE_TEMP 
	   AND OPT_DT = INDI_TIME;
	   select 0 into RTN;
	  ELSE
	   UPDATE CAMP_C_MART3_DATA_LOG_VW SET DATA_INFO = (DATA_INFO || ',今日数据已完整!')
	   WHERE DATA_DATE = P_DATE_TEMP 
	   AND OPT_DT = INDI_TIME;
	   select 1 into RTN;
	   
	update  k_report_status set REPORT_STATUS='0',report_flag='0'  ,REPORT_DATE=P_DATE_TEMP,DEAL_DATE=date where REPORT_TYPE='zengzhi';

insert into k_report_status_his (REPORT_TYPE, REPORT_STATUS, report_flag,REPORT_DATE, REMARK, DEAL_DATE)
values ('zengzhi','0','0',P_DATE_TEMP,  '增值',date );
	   

	  END IF;
	   END IF;
	   
	
	   SET P_DAY_COUNT = P_DAY_COUNT - 1;
	   SET P_DATE_TEMP = DEAL_DATEF - P_DAY_COUNT;
	
	  END LOOP data_loop_label;
	  
	  UPDATE CAMP_DATA_IS_UPDATE_VW SET IS_UPDATE = '0',OPT_DT = CAST(CURRENT_TIMESTAMP AS VARCHAR(19)) WHERE ID = 1;
	  
	 END;

相关的表

日志表  show table      WAPBI.IPAD_DATA_ERR_LOG

CREATE SET TABLE WAPBI.IPAD_DATA_ERR_LOG ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT
     (
      SQL_CODE INTEGER,
      SQL_MSG VARCHAR(1000) CHARACTER SET LATIN NOT CASESPECIFIC,
      ERR_DATA_DATE INTEGER,
      ERR_DT TIMESTAMP(6))
PRIMARY INDEX ( SQL_CODE );
show table      WAPBI.IPAD_DATA_ERR_LOG

CREATE SET TABLE WAPBI.IPAD_DATA_ERR_LOG ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT
     (
      SQL_CODE INTEGER,
      SQL_MSG VARCHAR(1000) CHARACTER SET LATIN NOT CASESPECIFIC,
      ERR_DATA_DATE INTEGER,
      ERR_DT TIMESTAMP(6))
PRIMARY INDEX ( SQL_CODE );



show table   WAPBI.CAMP_DATA_IS_UPDATE

CREATE MULTISET TABLE WAPBI.CAMP_DATA_IS_UPDATE ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT
     (
      ID INTEGER NOT NULL,
      IS_UPDATE CHAR(1) CHARACTER SET LATIN CASESPECIFIC TITLE '是否正在更新' NOT NULL,
      OPT_DT TIMESTAMP(6) TITLE '操作时间' NOT NULL)
PRIMARY INDEX ( ID );

show table camp_c_all_mter_new

CREATE MULTISET TABLE WAPBI.camp_c_all_mter_new ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT
     (
      DEAL_DATE DATE FORMAT 'YYYY-MM-DD' TITLE '处理日期' NOT NULL,
      REGION_CODE CHAR(2) CHARACTER SET LATIN CASESPECIFIC TITLE '地市代码' NOT NULL,
      CITY_CODE CHAR(2) CHARACTER SET LATIN CASESPECIFIC TITLE '区县代码',
      BRAND_CODE CHAR(2) CHARACTER SET LATIN CASESPECIFIC TITLE '品牌细项代码',
      ITEM_CODE CHAR(10) CHARACTER SET LATIN CASESPECIFIC TITLE '指标代码' NOT NULL,
      ITEM_NAME CHAR(40) CHARACTER SET LATIN CASESPECIFIC TITLE '指标名称',
      ITEM_VALUE DECIMAL(18,2) TITLE '指标值(不含税)',
      ITEM_VALUE_T DECIMAL(18,2) TITLE '指标值(含税)',
      NOTE VARCHAR(200) CHARACTER SET LATIN CASESPECIFIC TITLE '备注',
      BAK_FIELD1 DECIMAL(14,2) TITLE '备份字段1',
      BAK_FIELD2 CHAR(20) CHARACTER SET LATIN CASESPECIFIC TITLE '备份字段2')
PRIMARY INDEX ( DEAL_DATE ,REGION_CODE ,CITY_CODE )
PARTITION BY RANGE_N(DEAL_DATE  BETWEEN DATE '2005-01-01' AND DATE '2050-12-31' EACH INTERVAL '1' DAY )
INDEX MTER_IDX ( DEAL_DATE );









你可能感兴趣的:(彩信日报取数逻辑)