ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

存储demo

2022-03-28 18:01:19  阅读:157  来源: 互联网

标签:SQLERRM 存储 VARCHAR -- demo TABLENAME CDM DATE


CREATE OR REPLACE PROC_CDM_TEST(V_DATE IN VARCHAR) AUTHID CURRENT_USER
/* *********************************************
@JOB_NAME[任务名称]
@DESC [任务描述]
@LOAD STRATEGY[加载策略]
@TARGET TABLE [目标表]
@ SOURCE TABLE [源表]
@CREATE DATE [创建日期]
@MODIFIED HISTORY[修改记录]
@TIPS
若关联表超过3个则采用建立临时表的方式,临时表命名规则为 目标表名称_TEMP01,目标表名称_TEMP02
************************************************/
IS
    V_STEP INT :=0;
    V_SQLCODE VARCHAR(100);
    V_SQLERRM VARCHAR(6000);
    V_TB_PART VAR(11);--分区名称
    V_SQL VARCHAR(2000);
    V_ODSFILENAME VARCHAR(200);--HDFS下数据文件名称
    V_HDFS_NAME VARCHAR(200); --文件位置
    V_TABLENAME VARCHAR(200);--目标表名称
    V_PROC_NAME VARCHAR(200);--存储过程名称
    V_TABLE_TYPE VARCHAR(200); --表类型, 1-全量加载 2-流水表加载
    V_MIN_DATE VARCHAR(10);--表里最小的数据日期
    V_OUT_DATA_POSITION VARCHAR(200);--导出数据文件存放的位置
    v_etl_date VARCHAR(10);
    ERROREXCEPTION EXCEPTION;
BEGIN
    V_TABLENAME :='CDM_TEST'; --目标表名称
    V_PROC_NAME :='PROC_CDM_TEST';
    V_TABLE_TYPE :='1';
    v_etl_date :=replace(V_DATE,'-','');
    V_TB_PART :='P_'||REPLACE(V_ETL_DATE,'-','');--分区名称
    
    begin
    --数据清理
    v_sql :='select min(data_dt) from cdm.'||V_TABLENAME||''')';
    EXECUTE IMMEDIATE V_SQL INTO V_MIN_DATE;
    V_RETURN :=CDM.THREEYEARS(V_TABLENAME,V_ETL_DATE,V_MIN_DATE);
    end;
    
    V_STEP :=V_STEP+1;
    CDM.PROC_RECORD_CTL_JOB_LOG(V_TABLENAME,V_STEP,'数据清理',v_etl_date);
    begin
    --新建分区
    v_sql :='ALTER TABLE CDM.'||V_TABLENAME||'ADD PARTITION ' ||V_TB_PART||'(DATA_DT='''||V_ETL_DATE|| ''')';
    DBMS_OUTPUT.PUT_LINE(V_SQL);
    EXECUTE IMMEDIATE V_SQL;
    end;
    
    EXCEPTION 
    WHEN ERROREXCEPTION THEN
        V_SQLCODE := CAST(SQLCODE AS VARCHAR(100));
        V_SQLERRM := SQLERRM;
        CDM.PROC_CTL_JOB_ERROR(V_TABLENAME,V_STEP+1,NULL,V_ETL_DATE,V_SQLCODE,V_SQLERRM);
    WHEN OTHERS THEN 
        V_SQLCODE := CAST(SQLCODE AS VARCHAR(100));
        V_SQLERRM := SQLERRM;
        CDM.PROC_CTL_JOB_ERROR(V_TABLENAME,V_STEP+1,NULL,V_ETL_DATE,V_SQLCODE,V_SQLERRM);
END

 

标签:SQLERRM,存储,VARCHAR,--,demo,TABLENAME,CDM,DATE
来源: https://www.cnblogs.com/zhanglin123/p/16068312.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有