国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql存儲(chǔ)過程中的異常處理解析

2024-07-24 12:53:41
字體:
供稿:網(wǎng)友

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

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

這里面需要注意幾點(diǎn): 

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

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

2、SQLSTATE [VALUE] sqlstate_value,這個(gè)同錯(cuò)誤代碼類似形成一一對(duì)應(yīng)的關(guān)系,它是一個(gè)5個(gè)字符組成的字符串,關(guān)鍵的地方是它從ANSI SQL和ODBC這些標(biāo)準(zhǔn)中引用過來的,因此更加標(biāo)準(zhǔn)化,而不像上面的error_code完全是mysql自己定義給自己用的,這個(gè)和第一個(gè)類似也可以 參考mysql數(shù)據(jù)庫錯(cuò)誤代碼及信息。

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

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

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

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

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

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

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

1、對(duì)于SQLWARNING和NOT FOUND的處理方法就是無視錯(cuò)誤繼續(xù)執(zhí)行,所以在游標(biāo)的例子里面如果我們沒有對(duì)repeat的條件判斷的那個(gè)值做個(gè)no_more_products=1的handler來處理,那么循環(huán)就會(huì)一直下去。

2、對(duì)于SQLEXCEPTION的話,其默認(rèn)的處理方法是在出現(xiàn)錯(cuò)誤的地方就終止掉了。 

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘肃省| 丹阳市| 北川| 微博| 蓬莱市| 华安县| 台安县| 乌鲁木齐县| 南投市| 武城县| 建始县| 建水县| 深泽县| 铁岭县| 土默特右旗| 安福县| 鲁山县| 乌兰浩特市| 景泰县| 孟村| 淮南市| 花莲市| 鄂伦春自治旗| 柞水县| 博罗县| 林芝县| 肇州县| 仪征市| 利川市| 辽阳市| 肃宁县| 双江| 新竹县| 西乌| 镇远县| 嘉兴市| 津南区| 昌吉市| 恩施市| 开原市| 云林县|