DB2存储过程模版
1、日志表create table joblog
(
jobfun varchar(50), --存儲過程的功能
procname varchar(100), --存儲過程
runtime varchar(50), --運行時間
currentuser varchar(50), --當前用戶
state varchar(4), --狀態
ChangeRecordsNum integer --受影響行數
)state代表:
--Joblog stats =0 正在執行
--Joblog stats =1 存儲過程正常結束
--Joblog stats =8 有其他過程正在執行,中斷
--Joblog stats =9 存儲過程異常終止
2、存儲過程模板create PROCEDURE YY_Proc01 (IN FromDate integer)
--Joblog stats =0 running
--Joblog stats =1 Finish right
--Joblog stats =8 Finish cause by another running
--Joblog stats =9 Stop with exception
LANGUAGE sql
YY_Proc:begindeclare JobFun varChar(50) default 'Delete W02 CINACC';--
declare ChangeRecordsNum integer default 0 ;declare flag integer default 0;--考慮作為返回參數declare SQLSTATE char(5);declare at_end integer default 0;declare not_found condition for SQLSTATE '02000';declare MyCur cursor for < ..select..>;/**********異常處理************/declare exit HANDLER FOR SQLEXCEPTIONbeginrollback;insert into joblog values(JobFun,'YY_Proc01',(select current timestamp from sysibm.sysdummy1),(select user from sysibm.sysdummy1),'9',0);--執行遇到異常set flag=1;return flag;end;declare CONTINUE HANDLER FOR not_foundbeginset at_end=1;end;/***************************/set flag = 0;--開始工作 insert into logsinsert into joblog values(JobFun,'YY_Proc01',(select current timestamp from sysibm.sysdummy1),(select user from sysibm.sysdummy1),'0',0); OPEN MyCur;set at_end=0;FETCH MyCur INTO ans;WHILE at_end=0 DO--your workSET at_end = 0;--循環受影響行Set ChangeRecordsNum = ChangeRecordsNum+1;FETCH MyCur INTO ans;END WHILE;CLOSE MyCur;--順利執行完畢insert into joblog values(JobFun,'YY_Proc01',(select current timestamp from sysibm.sysdummy1),(select user from sysibm.sysdummy1),'1',ChangeRecordsNum);commit;set flag=0;return flag;
end YY_Proc
?
總結
- 上一篇: 画胖小人和瘦小人,建造者模式版本
- 下一篇: Lync Server 2013企业版部