行云日志捕获
CREATE OR REPLACE procedure PROC_RECORD_CTL_JON_error(V_TABLEname VARCHAR,V_STEP NUMBER,V_STEP_DESC VARCHAR,V_ETL_DT VARCHAR,v_sqlcode varchar,v_sqlerrm varchar) AS V_NUM INT :=0 ;-- V_SQL VARCHAR(2000); V_PROC_NAME VARCHAR(2000); BEGIN v_proc_name := 'proc'||v_tablename ; v_sql := 'select xount(1) from v$user_tab_parts where table_name=''cdm_ctl_job_log'' and part_name=''p_'||v_tablename||''''; dbms_output.put_line(v_sql); execute immediate v_sql into v_num; dbms_output.put_line(v_num); if v_num<=0 then --add partiton v_sql :='alter table cdm_ctl_job_log add partiton p_' || v_tablename || '(proc_name=''proc_'||v_tablename||''')'; dbms_output.put_line(v_sql); execute immediate v_sql; insert into cdm_ctl_job_log( proc_name, --过程名 step,--步骤 step_desc,--步骤描述 etl_dt,--etl日期 operator_time,--操作时间 sql_code, sql_errror ) partition on (proc_name=v_proc_name) select v_proc_name, v_step, v_step_desc, v_etl_dt, current_date, v_sqlcode, v_sqlerrm from dual; elsif v_num>0 then insert into cdm_ctl_job_log( proc_name, --过程名 step,--步骤 step_desc,--步骤描述 etl_dt,--etl日期 operator_time,--操作时间 sql_code, sql_errror ) partition on (proc_name=v_proc_name) select v_proc_name, v_step, v_step_desc, v_etl_dt, current_date, v_sqlcode, v_sqlerrm from dual; end if; END;