異常處理過程
有問題過程會比執行三次還是不行就會停止執行
create or replace procedure exception_procedure is
cursor log_data is select m.pro_name from T_DATA_UPDATE_LOG m where m.status=0 and m.info='異常' and to_char(m.begin_date,'yyyymmdd')=to_char(sysdate,'yyyymmdd') group by m.pro_name;
v_sql varchar2(100);
info_p varchar2(100);
record_new number(38);
start_time date;
begin
PRO_DATA_UPDATE_LOG('exception_procedure', '開始', null,null);
for n in log_data loop
select count(1) into record_new from T_DATA_UPDATE_LOG where PRO_NAME=n.pro_name and to_char(begin_date,'yyyymmdd')>=to_char(sysdate-1,'yyyymmdd') and status=0 and info='異常' order by begin_date desc;
if record_new < 3 then
v_sql := 'BEGIN '||n.pro_name||'; END;';
--v_sql := 'BEGIN pro_job_log('''||'dd'||'''); END;';
execute immediate v_sql;
select max(begin_date),info into start_time,info_p from T_DATA_UPDATE_LOG where pro_name=n.pro_name and to_char(begin_date,'yyyymmdd')=to_char(sysdate,'yyyymmdd') and info='正常' group by info;
if info_p = '正常' then
update T_DATA_UPDATE_LOG set status=1 where info='異常' and status=0 and pro_name=n.pro_name;
COMMIT;
end if;
end if;
end loop;
PRO_DATA_UPDATE_LOG('exception_procedure', 'ok', '結束',1);
exception
when others then
/* --sg_log_err('manage_partition',sqlerrm);
pro_name :='manage_partition';
err_info :=sqlerrm;
select sysdate into sj from dual;
v_Sql := 'insert into err_log values('||'''pro_name'''||','''||err_info||''','''||sj||''')';
execute immediate v_Sql;
commit;*/
PRO_DATA_UPDATE_LOG('exception_procedure', sqlerrm, '異常',0);
dbms_output.put_line(sqlcode||sqlerrm);
end exception_procedure;
create or replace procedure exception_procedure is
cursor log_data is select m.pro_name from T_DATA_UPDATE_LOG m where m.status=0 and m.info='異常' and to_char(m.begin_date,'yyyymmdd')=to_char(sysdate,'yyyymmdd') group by m.pro_name;
v_sql varchar2(100);
info_p varchar2(100);
record_new number(38);
start_time date;
begin
PRO_DATA_UPDATE_LOG('exception_procedure', '開始', null,null);
for n in log_data loop
select count(1) into record_new from T_DATA_UPDATE_LOG where PRO_NAME=n.pro_name and to_char(begin_date,'yyyymmdd')>=to_char(sysdate-1,'yyyymmdd') and status=0 and info='異常' order by begin_date desc;
if record_new < 3 then
v_sql := 'BEGIN '||n.pro_name||'; END;';
--v_sql := 'BEGIN pro_job_log('''||'dd'||'''); END;';
execute immediate v_sql;
select max(begin_date),info into start_time,info_p from T_DATA_UPDATE_LOG where pro_name=n.pro_name and to_char(begin_date,'yyyymmdd')=to_char(sysdate,'yyyymmdd') and info='正常' group by info;
if info_p = '正常' then
update T_DATA_UPDATE_LOG set status=1 where info='異常' and status=0 and pro_name=n.pro_name;
COMMIT;
end if;
end if;
end loop;
PRO_DATA_UPDATE_LOG('exception_procedure', 'ok', '結束',1);
exception
when others then
/* --sg_log_err('manage_partition',sqlerrm);
pro_name :='manage_partition';
err_info :=sqlerrm;
select sysdate into sj from dual;
v_Sql := 'insert into err_log values('||'''pro_name'''||','''||err_info||''','''||sj||''')';
execute immediate v_Sql;
commit;*/
PRO_DATA_UPDATE_LOG('exception_procedure', sqlerrm, '異常',0);
dbms_output.put_line(sqlcode||sqlerrm);
end exception_procedure;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29065182/viewspace-2121447/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 某次BW 異常處理過程
- MySQL儲存過程的異常處理方法MySql儲存過程
- MVC使用異常過濾器處理異常MVC過濾器
- 一次資料庫異常的處理過程資料庫
- 異常篇——異常處理
- MySQL 儲存過程定義條件和異常處理MySql儲存過程
- 異常處理
- 異常處理遇到過的那些坑
- Nginx部署HTTPS服務過程與異常處理實踐NginxHTTP
- oracle 儲存過程遊標中處理並記錄異常Oracle儲存過程
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- DRF 過濾排序分頁異常處理排序
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL
- Swift 異常處理Swift
- JS異常處理JS
- app異常處理APP
- Oracle 處理異常Oracle
- MySQL異常處理MySql
- 異常處理 (轉)
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- 異常的處理
- Java 異常處理Java
- 異常處理機制(二)之異常處理與捕獲
- JSP 異常處理如何處理?JS
- Java 異常表與異常處理原理Java