成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB2 存儲過程的異常處理器類型有幾種?

數據庫
我們今天主要向大家講述的是DB2 存儲過程的異常處理方法,以及對異常處理器類型(handler-type)的具體描述,以下就有相關內容的描述。

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

 

存儲過程異常的處理:

 

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

 

 

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

 

CONTINUE 在處理器操作完成之后,會繼續執行產生這個異常語句之后的下一條語句。

 

EXIT 在處理器操作完成之后,存儲過程會終止,并將控制返回給調用者。

 

UNDO 在處理器操作執行之前,DB2會回滾存儲過程中執行的SQL操作。在處理器操作完成之后,存儲過程會終止,并將控制返回給調用者。

 

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

 

NOT FOUND 標識導致SQLCODE值為+100或者SQLSATE值為02000的異常。這個異常通常在SELECT沒有返回行的時候出現。

 

SQLEXCEPTIOIN 標識導致SQLCODE值為負的異常。

 

SQLWARNING 標識導致警告異常或者導致+100以外的SQLCODE正值的異常。

 

如果產生了NOT FOUND 或者SQLWARNING異常,并且沒有為這個異常定義異常處理器,那么就會忽略這個異常,并且將控制流轉向下一個語句。如果產生了SQLEXCEPTION異常,并且沒有為這個異常定義異常處理器,那么DB2 存儲過程就會失敗,并且會將控制流返回調用者。

 

以下示例聲明了兩個異常處理器。 EXIT處理器會在出現SQLEXCEPTION 或者SQLWARNING異常的時候被調用。EXIT處理器會在終止SQL程序之前,將名為stmt的變量設為"ABORTED",并且將控制流返回給調用者。UNDO處理器會將控制流返回給調用者之前,回滾存儲過程體中已經完成的SQL操作。

 

清單3:異常處理器示例

 

 

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

 

 

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

 

 

清單4:定制異常處理器

 

 

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

 

處理器可以由單獨的存儲過程語句定義,也可以使用由BEGIN…END塊界定的復合語句定義。注意在執行符合語句的時候,SQLSATE和SQLCODE的值會被改變,如果需要保留異常前的SQLSATE和SQLCODE,就需要在執行復合語句的***個語句把SQLSATE和SQLCODE賦予本地變量或參數。

 

通常,我們會為DB2 存儲過程定義一個執行狀態的輸出參數(例如: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:產品實例關聯客戶過程出錯!';   
  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;  

較好的實例:

  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;   

以上的相關內容就是對DB2 存儲過程異常處理方法的介紹,望你能有所收獲。

 

【編輯推薦】

  1. DB2 Online備份的操作方案“盛宴”
  2. DB2恢復刪除表的實際操作技巧演示
  3. DB2數據庫備份,恢復命令的操作經驗總結
  4. 3個方案實現備份恢復DB2數據庫,很簡單!
  5. 正確提高DB2數據備份和恢復的效率要用到哪些項目?
責任編輯:佚名 來源: net-note.cn
相關推薦

2010-11-03 10:12:49

DB2異常處理器

2010-11-03 11:02:34

DB2存儲過程

2010-11-03 10:35:45

DB2存儲過程

2010-11-04 15:48:37

DB2條件處理器

2010-08-18 13:29:11

DB2存儲過程

2010-11-03 10:26:22

DB2存儲過程

2010-11-03 10:46:49

DB2存儲過程

2010-08-20 10:26:25

DB2數據類型

2010-08-31 15:39:25

DB2存儲過程

2010-08-05 10:42:33

DB2 拉鏈表存儲過程

2011-04-11 10:11:25

DB2SQL錯誤

2010-08-12 17:23:20

DB2存儲過程編寫流程

2010-08-25 09:56:02

DB2存儲過程

2010-11-04 12:00:59

db2存儲過程

2011-04-15 13:21:41

DB2翻頁存儲

2010-08-18 13:59:04

DB2純SQL存儲過程

2010-09-06 10:54:52

DB2 sql 存儲過

2009-03-10 09:08:06

DB2存儲過程實施

2010-11-04 09:50:56

DB2循環

2010-09-01 15:09:41

DB2動態游標
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人性视频免费网站 | 欧美a级成人淫片免费看 | 免费国产黄| 久草在线青青草 | 99精品亚洲国产精品久久不卡 | 91视频一区 | 紧缚调教一区二区三区视频 | 91在线 | 成人福利在线观看 | 视频一区二区中文字幕 | 毛片大全| 欧美一区二区三区久久精品视 | 国产一级视频在线 | 日韩在线视频免费观看 | 国产精品久久久久久一区二区三区 | 亚洲免费观看视频网站 | 日本精品视频在线 | 国产精品久久久久久久久久妇女 | 天天爽夜夜操 | 日韩欧美国产精品 | 浮生影院免费观看中文版 | 91精品久久久久久久久中文字幕 | 夜夜爽99久久国产综合精品女不卡 | 国产精品国产三级国产aⅴ中文 | 色姑娘综合网 | 特级黄一级播放 | 国产精品久久一区二区三区 | 人操人人干人 | 午夜在线视频 | 久草在线| 亚洲网站在线观看 | 久久亚洲春色中文字幕久久久 | 欧美日日| 久久精品成人 | 国产精品久久久久久久毛片 | 热99精品视频 | 欧美专区在线视频 | 午夜影院在线观看版 | 在线一区视频 | 国产一区二区三区四区 | 精品一区在线看 |