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;