-- 这里要跟ODS的上报日志表进行比较, 因为TODS为了节省插入时间, 每次抽取前皆清空
-- 为了效率,直接用时间进行比较, 用主键ID来进行比较的话,时间上可能会比较恐怖
v_inse_sql_log:='
insert into tods.CCSBI_LOG_UP_'||p_pro_code||'
select * from '|| p_user ||'.CCSBI_LOG_UP@'|| p_dblink ||' cml
where cml.LOG_DATE > (select max(LOG_DATE) from ods.CCSBI_LOG_UP_'|| p_pro_code ||' bil )
or (select max(LOG_DATE) from ods.CCSBI_LOG_UP_'|| p_pro_code ||' bil ) is null ';
execute immediate v_inse_sql_log;
commit;
-- 全量抽取
if p_etl_type = 'ALL' then
-- 插入新的数据
v_inse_sql_a:='
insert into tods.CCSBI_A_CONTRACT_'|| p_pro_code ||'
select * from '|| p_user ||'.CCSBI_A_CONTRACT@'|| p_dblink ||'';
v_inse_sql_b:='
insert into tods.CCSBI_B_WORKLOAD_'|| p_pro_code ||'
select * from '|| p_user ||'.CCSBI_B_WORKLOAD@'|| p_dblink ||'';
v_inse_sql_c:='
insert into tods.CCSBI_C_GATHERING_'|| p_pro_code ||'
select * from '|| p_user ||'.CCSBI_C_GATHERING@'|| p_dblink ||'';
v_inse_sql_d:='
insert into tods.CCSBI_D_INCOME_'||p_pro_code||'
select * from '|| p_user ||'.CCSBI_D_INCOME@'|| p_dblink ||'';
-- 异常处理
exception
when others then
if v_temp_cur%isopen then
close v_temp_cur;
end if;
rollback;
BICODE.PKG_ETL_CONTROLLER.P_ETL_WRITE_LOG('异常','抽取CM系统中间表至TODS的存储过程 P_ETL_TODS_ABCD 异常.原因: '|| sqlcode || sqlerrm,'TODS');