亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

mysql存儲過程中的異常處理解析

2024-07-24 13:10:36
字體:
來源:轉載
供稿:網友

定義異常捕獲類型及處理方法: 

  DECLARE handler_action HANDLER     FOR condition_value [, condition_value] ...     statement      handler_action:     CONTINUE    | EXIT    | UNDO      condition_value:     mysql_error_code    | SQLSTATE [VALUE] sqlstate_value    | condition_name    | SQLWARNING    | NOT FOUND    | SQLEXCEPTION  

這里面需要注意幾點: 

a、condition_value [,condition_value],這個的話說明可以包括多種情況(方括弧表示可選的),也就是一個handler可以定義成針對多種情況進行相應的 操作;另外condition_value可以包括的值有上面列出來的6種:

1、mysql_error_code,這個表示mysql的錯誤代碼,錯誤代碼是一個數字,完成是由mysql自己定義的,這個值可以參考mysql數據庫錯誤代碼及信息。

2、SQLSTATE [VALUE] sqlstate_value,這個同錯誤代碼類似形成一一對應的關系,它是一個5個字符組成的字符串,關鍵的地方是它從ANSI SQL和ODBC這些標準中引用過來的,因此更加標準化,而不像上面的error_code完全是mysql自己定義給自己用的,這個和第一個類似也可以 參考mysql數據庫錯誤代碼及信息。

3、condtion_name,這個是條件名稱,它使用DECLARE...CONDITION語句來定義,這個后面我們會介紹如何定義自己的condition_name。

4、SQLWARNING,表示SQLTATE中的字符串以‘01'起始的那些錯誤,比如Error: 1311 SQLSTATE: 01000 (ER_SP_UNINIT_VAR)

5、NOT FOUND,表示SQLTATE中的字符串以‘02'起始的那些錯誤,比如Error: 1329 SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA)

6、SQLEXCEPTION,表示SQLSTATE中的字符串不是以'00'、'01'、'02' 起始的那些錯誤,這里'00'起始的SQLSTATE其實表示的是成功執行而不是錯誤,另外兩個就是上面的4和5的兩種情況。 

上面的6種情況其實可以分為兩類:

一類就是比較明確的處理,就是對指定的錯誤情況進行處理,包括1、2、3這三種方式;

另一類是對對應類型的錯誤的 處理,就是對某一群錯誤的處理,包括4、5、6這三種方式。這個是介紹了condition_value。另外還要注意的一個內容是MySQL在默認情況 下(也就是我們沒有定義處理錯誤的方法-handler)自己的錯誤處理機制:

1、對于SQLWARNING和NOT FOUND的處理方法就是無視錯誤繼續執行,所以在游標的例子里面如果我們沒有對repeat的條件判斷的那個值做個no_more_products=1的handler來處理,那么循環就會一直下去。

2、對于SQLEXCEPTION的話,其默認的處理方法是在出現錯誤的地方就終止掉了。 

b、statement,這個比較簡單就是當出現某種條件/錯誤時,我們要執行的語句,可以是簡單的如 SET  var = value這樣的簡單的語句,也可以是復雜的多行的語句,多行的話可以使用BEGIN  .....  END這里把語句包括在里面(這個好比delphi里面的情況,注意到我們的存儲過程也是多行的,所以也要BEGIN .... END)。

c、handler_action,這個表示當執行完上面的statement后,希望執行怎樣的動作,這里包括CONTINUE、EXIT、UNDO, 表示繼續、退出、撤銷(暫時不支持)。這邊就是兩種動作,其實這兩種動作在上面也說過了,CONTINUE就是一個是SQLWARNING和NOT FOUND的默認處理方法,而EXIT就是SQLEXCEPTION的默認處理方法。 

另: 

condition_name:命名條件 
MySQL error code或者SQLSTATE code的可讀性太差,所以引入了命名條件: 

語法: 

  DECLARE condition_name CONDITION FOR condition_value      condition_value:     SQLSTATE [VALUE] sqlstate_value    | mysql_error_code  

使用:

  # original   DECLARE CONTINUE HANDLER FOR 1216 MySQL_statements;      # changed   DECLARE foreign_key_error CONDITION FOR 1216;   DECLARE CONTINUE HANDLER FOR foreign_key_error MySQL_statements;
  

示例: 

  CREATE PROCEDURE sp_add_location     (in_location  VARCHAR(30),      in_address1  VARCHAR(30),      in_address2  VARCHAR(30),      zipcode    VARCHAR(10),      OUT out_status VARCHAR(30))   BEGIN     DECLARE CONTINUE HANDLER       FOR 1062       SET out_status='Duplicate Entry';        SET out_status='OK';     INSERT INTO locations       (location,address1,address2,zipcode)     VALUES       (in_location,in_address1,in_address2,zipcode);   END; 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av中文字幕在线免费观看| 国产精品久久久久久久av大片| 性欧美亚洲xxxx乳在线观看| 国产亚洲福利一区| 成人激情免费在线| 高跟丝袜欧美一区| 日本高清+成人网在线观看| 亚洲国产成人精品久久久国产成人一区| 欧美精品亚州精品| 久久久久国产视频| 精品国产区一区二区三区在线观看| 成人a在线视频| 亚洲国产精品美女| 97成人在线视频| 国产亚洲欧美视频| www.午夜精品| 国产亚洲欧美视频| 亚洲伊人成综合成人网| 亚洲成年人在线| 热99精品里视频精品| 一区二区亚洲欧洲国产日韩| 亚洲精品美女在线| 国产精品一区二区三| 美女福利视频一区| 成人女保姆的销魂服务| 亚洲wwwav| 中文字幕亚洲激情| 久久久精品久久| 久久好看免费视频| 91精品国产91久久| 国产九九精品视频| 国产欧美日韩精品丝袜高跟鞋| 日本午夜人人精品| www欧美xxxx| 久久久久国色av免费观看性色| 久久亚洲精品一区二区| 日韩免费在线看| 国产精品高清免费在线观看| 亚洲国产中文字幕在线观看| 亚洲欧美在线一区二区| 国模精品视频一区二区| 在线成人激情视频| 成人黄色大片在线免费观看| 日韩精品日韩在线观看| 欧美在线免费观看| 日本成人激情视频| 欧美午夜激情视频| 国产亚洲欧洲在线| 亚洲第一天堂无码专区| 奇米4444一区二区三区| 久久精品亚洲一区| 国产精品亚洲片夜色在线| 深夜福利91大全| 精品无码久久久久久国产| 欧美专区在线播放| 丝袜美腿亚洲一区二区| 欧美激情精品久久久久久蜜臀| 青青草99啪国产免费| 97在线看免费观看视频在线观看| 日韩欧美福利视频| 美女黄色丝袜一区| 91wwwcom在线观看| 97碰碰碰免费色视频| 亚洲成人网在线观看| 国产伦精品一区二区三区精品视频| 亚洲黄色www| xxx一区二区| 欧美激情小视频| 久久久精品影院| 久久久久久com| 日韩毛片中文字幕| 亚洲欧美综合另类中字| 国产成人精品a视频一区www| 成人激情视频网| 日韩欧美国产高清91| 色妞在线综合亚洲欧美| 亚洲免费中文字幕| 国产综合久久久久久| 国产精品自产拍在线观| 黄色一区二区在线| 美女少妇精品视频| 日韩精品免费一线在线观看| 日韩电影中文字幕在线| 麻豆乱码国产一区二区三区| 亚洲性夜色噜噜噜7777| 国产91精品在线播放| 亚洲国产古装精品网站| 久久久久久av| 欧美最顶级丰满的aⅴ艳星| 欧美中文字幕在线视频| 亚洲春色另类小说| 国产亚洲精品91在线| 日韩电视剧在线观看免费网站| 美女黄色丝袜一区| 亚洲国产高清福利视频| 亚洲天堂视频在线观看| 亚洲精品不卡在线| 国产精品美女无圣光视频| 理论片在线不卡免费观看| 国产欧美精品在线| 亚洲精品久久久久久久久| 国产va免费精品高清在线观看| 亚洲精品有码在线| 久久免费国产精品1| 久久久中文字幕| 亚洲色图13p| 九色精品免费永久在线| 日韩精品极品视频免费观看| 日韩av色综合| 国产一区二区三区在线| 久久久www成人免费精品张筱雨| 日韩免费不卡av| 欧美日韩高清区| 国产精品av免费在线观看| 精品福利在线观看| 欧美在线不卡区| 欧美国产日韩免费| 亚洲影院色在线观看免费| 国产欧美一区二区白浆黑人| 日韩精品欧美激情| 国产精品91在线观看| 国产一区二区三区日韩欧美| 91精品在线看| 美女精品视频一区| 中文字幕一精品亚洲无线一区| 亚洲天堂男人天堂女人天堂| 亚洲女人天堂成人av在线| 亚洲xxxx做受欧美| 欧美精品免费播放| 亚洲国产精品久久| 粉嫩老牛aⅴ一区二区三区| 日韩亚洲精品电影| 欧美一级淫片videoshd| 久久久国产一区| 日韩av影视综合网| 日韩av免费看| 久久国产视频网站| 国产成人久久久精品一区| 国产精品第100页| 高清欧美性猛交xxxx黑人猛交| 欧美午夜精品久久久久久久| 国产精品亚发布| 91在线免费看网站| 欧美成年人视频网站欧美| 亚洲伊人成综合成人网| 午夜精品一区二区三区在线视频| 91国偷自产一区二区三区的观看方式| 成人网中文字幕| 亚洲aa中文字幕| 日韩av在线免费播放| 欧美成人精品h版在线观看| 亚洲美腿欧美激情另类| 欧洲精品久久久| www.亚洲男人天堂| 久久久久亚洲精品成人网小说| 精品久久久久久久久久久久久| 国产亚洲精品一区二区| 日本成人在线视频网址| 亚洲第一区在线观看| 亚洲视频在线免费观看| 欧美高清性猛交| 红桃av永久久久| 91九色国产社区在线观看| 亚洲精品乱码久久久久久金桔影视|