自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2 存儲(chǔ)過(guò)程的異常處理器類型有幾種?

數(shù)據(jù)庫(kù)
我們今天主要向大家講述的是DB2 存儲(chǔ)過(guò)程的異常處理方法,以及對(duì)異常處理器類型(handler-type)的具體描述,以下就有相關(guān)內(nèi)容的描述。

以下的文章主要向大家講述的是DB2 存儲(chǔ)過(guò)程的異常處理方法,在DB2數(shù)據(jù)庫(kù)中,假如你要使用sqlcode,那么你就必須在DDL語(yǔ)句之前declare。這是我們大家都必須了解的,以下就是文章的主要內(nèi)容描述。

 

存儲(chǔ)過(guò)程異常的處理:

 

  1. DECLARE handler-type HANDLER FOR condition handler-action  

 

 

異常處理器類型(handler-type)有以下幾種:

 

CONTINUE 在處理器操作完成之后,會(huì)繼續(xù)執(zhí)行產(chǎn)生這個(gè)異常語(yǔ)句之后的下一條語(yǔ)句。

 

EXIT 在處理器操作完成之后,存儲(chǔ)過(guò)程會(huì)終止,并將控制返回給調(diào)用者。

 

UNDO 在處理器操作執(zhí)行之前,DB2會(huì)回滾存儲(chǔ)過(guò)程中執(zhí)行的SQL操作。在處理器操作完成之后,存儲(chǔ)過(guò)程會(huì)終止,并將控制返回給調(diào)用者。

 

異常處理器可以處理基于特定SQLSTATE值的定制異常,或者處理預(yù)定義異常的類。預(yù)定義的3種異常如下所示:

 

NOT FOUND 標(biāo)識(shí)導(dǎo)致SQLCODE值為+100或者SQLSATE值為02000的異常。這個(gè)異常通常在SELECT沒(méi)有返回行的時(shí)候出現(xiàn)。

 

SQLEXCEPTIOIN 標(biāo)識(shí)導(dǎo)致SQLCODE值為負(fù)的異常。

 

SQLWARNING 標(biāo)識(shí)導(dǎo)致警告異?;蛘邔?dǎo)致+100以外的SQLCODE正值的異常。

 

如果產(chǎn)生了NOT FOUND 或者SQLWARNING異常,并且沒(méi)有為這個(gè)異常定義異常處理器,那么就會(huì)忽略這個(gè)異常,并且將控制流轉(zhuǎn)向下一個(gè)語(yǔ)句。如果產(chǎn)生了SQLEXCEPTION異常,并且沒(méi)有為這個(gè)異常定義異常處理器,那么DB2 存儲(chǔ)過(guò)程就會(huì)失敗,并且會(huì)將控制流返回調(diào)用者。

 

以下示例聲明了兩個(gè)異常處理器。 EXIT處理器會(huì)在出現(xiàn)SQLEXCEPTION 或者SQLWARNING異常的時(shí)候被調(diào)用。EXIT處理器會(huì)在終止SQL程序之前,將名為stmt的變量設(shè)為"ABORTED",并且將控制流返回給調(diào)用者。UNDO處理器會(huì)將控制流返回給調(diào)用者之前,回滾存儲(chǔ)過(guò)程體中已經(jīng)完成的SQL操作。

 

清單3:異常處理器示例

 

 

  1. DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING SET stmt = 'ABORTED';   
  2. DECLARE UNDO HANDLER FOR NOT FOUND;  

 

 

如果預(yù)定義異常集不能滿足需求,就可以為特定的SQLSTATE值聲明定制異常,然后再為這個(gè)定制異常聲明處理器。語(yǔ)法如下:

 

 

清單4:定制異常處理器

 

 

  1. DECLARE unique-name CONDITION FOR SQLSATE 'sqlstate'  

 

處理器可以由單獨(dú)的存儲(chǔ)過(guò)程語(yǔ)句定義,也可以使用由BEGIN…END塊界定的復(fù)合語(yǔ)句定義。注意在執(zhí)行符合語(yǔ)句的時(shí)候,SQLSATE和SQLCODE的值會(huì)被改變,如果需要保留異常前的SQLSATE和SQLCODE,就需要在執(zhí)行復(fù)合語(yǔ)句的***個(gè)語(yǔ)句把SQLSATE和SQLCODE賦予本地變量或參數(shù)。

 

通常,我們會(huì)為DB2 存儲(chǔ)過(guò)程定義一個(gè)執(zhí)行狀態(tài)的輸出參數(shù)(例如:poGenStatus)。

 

  1. declare sqlcode integer default 0;   
  2. begin   
  3. declare continue handler for sqlexception set ret = sqlcode;   
  4. declare continue handler for sqlwarning set ret = sqlcode;   
  5. declare continue handler for not found set ret = sqlcode;   
  6. end ;  

異常的聲明

異常的處理

  1. if sqlcode< 0 or sqlcode100 then   
  2. set O_RetCod = RetCode;   
  3. set O_RetMsg = 'CLN02:產(chǎn)品實(shí)例關(guān)聯(lián)客戶過(guò)程出錯(cuò)!';   
  4. insert into LOG.OPER_LOG_TAB(PROC_NAME,OBJ_TAB,REGION_COD,OPER_COUNT,ERR_CODE,DATA_TIME,OPER_TIME)   
  5. values('P_DW_CLEAN','GLOBAL TEMP',0,0,retcode,CHAR(last_3_mon_time),current TIMESTAMP);   
  6. return;   
  7. else   
  8. set RetCode = 0;   
  9. end if;  

較好的實(shí)例:

  1. CREATE PROCEDURE divide ( IN numerator INTEGER,  
  2. IN denominator INTEGER,  
  3. OUT result INTEGER)  
  4. LANGUAGE SQL  
  5. BEGIN  
  6. DECLARE overflow CONDITION FOR SQLSTATE '22003';  
  7. DECLARE CONTINUE HANDLER FOR overflow  
  8. RESIGNAL SQLSTATE '22375';  
  9. IF denominator = 0 THEN  
  10. SIGNAL overflow;  
  11. ELSE  
  12. SET result = numerator / denominator;  
  13. END IF;   

以上的相關(guān)內(nèi)容就是對(duì)DB2 存儲(chǔ)過(guò)程異常處理方法的介紹,望你能有所收獲。

 

【編輯推薦】

  1. DB2 Online備份的操作方案“盛宴”
  2. DB2恢復(fù)刪除表的實(shí)際操作技巧演示
  3. DB2數(shù)據(jù)庫(kù)備份,恢復(fù)命令的操作經(jīng)驗(yàn)總結(jié)
  4. 3個(gè)方案實(shí)現(xiàn)備份恢復(fù)DB2數(shù)據(jù)庫(kù),很簡(jiǎn)單!
  5. 正確提高DB2數(shù)據(jù)備份和恢復(fù)的效率要用到哪些項(xiàng)目?
責(zé)任編輯:佚名 來(lái)源: net-note.cn
相關(guān)推薦

2010-11-03 10:12:49

DB2異常處理器

2010-11-03 11:02:34

DB2存儲(chǔ)過(guò)程

2010-11-03 10:35:45

DB2存儲(chǔ)過(guò)程

2010-11-04 15:48:37

DB2條件處理器

2010-08-18 13:29:11

DB2存儲(chǔ)過(guò)程

2010-11-03 10:46:49

DB2存儲(chǔ)過(guò)程

2010-08-20 10:26:25

DB2數(shù)據(jù)類型

2010-08-05 10:42:33

DB2 拉鏈表存儲(chǔ)過(guò)程

2010-11-03 10:26:22

DB2存儲(chǔ)過(guò)程

2010-08-31 15:39:25

DB2存儲(chǔ)過(guò)程

2011-04-11 10:11:25

DB2SQL錯(cuò)誤

2010-08-25 09:56:02

DB2存儲(chǔ)過(guò)程

2010-08-12 17:23:20

DB2存儲(chǔ)過(guò)程編寫流程

2011-04-15 13:21:41

DB2翻頁(yè)存儲(chǔ)

2010-11-04 12:00:59

db2存儲(chǔ)過(guò)程

2010-08-18 13:59:04

DB2純SQL存儲(chǔ)過(guò)程

2010-09-06 10:54:52

DB2 sql 存儲(chǔ)過(guò)

2010-09-01 15:09:41

DB2動(dòng)態(tài)游標(biāo)

2010-08-11 09:14:33

DB2數(shù)據(jù)類型

2009-03-10 09:08:06

DB2存儲(chǔ)過(guò)程實(shí)施
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)