做者:UncleToo 來源:翻譯 日期:2014-05-20 7:53:13
收藏 評論:( 2 ) 閱讀:1985sql
當MySQL執行存儲過程遇到錯誤時,適當處理它,如繼續執行或退出當前代碼段,並返回有意義的錯誤提示是很重要的。一方面提升程序的容錯能力,另外一方便當程序出錯時,開發人員也能準肯定位錯誤的地方。學習
在本章MySQL教程中,咱們將學習如何在存儲過程當中處理程序錯誤。測試
聲明處理程序spa
MySQL爲咱們提供了一種簡單的方法定義處理程序,咱們能夠使用DECLARE HANDLER語句,以下所示:翻譯
1code |
|
若是其值與condition_value匹配,MySQL將執行statement,而且根據action值選擇繼續或退出當前代碼塊。ci
action 能夠是如下兩種:開發
CONTINUE:繼續執行當前代碼塊get
EXIT:退出當前代碼塊
condition_value 是一類特定的條件,能夠使一下幾種:
一個MYSQL錯誤代碼
一個標準的SQLSTATE值,如SQLWARNING,NOTFOUND ,SQLEXCEPTION等
statement 是一個語句塊,從BEGIN開始,到END結束。它能夠是一個簡單的sql語句,也能夠是很複雜的邏輯語句。
MySQL錯誤處理的例子
例1:當程序發生錯誤,將has_error值置爲1。如:
1 |
|
例2:當遇到錯誤時,程序將回滾以前的操做,同時給出錯誤提示,而後退出當前程序塊。如:
1 2 3 4 5 |
|
例3:對於遊標或select into操做,若是出現找不到記錄的狀況,將no_row_found賦值爲1。如:
1 |
|
例4:若是出現重複鍵值,MySQL會給出1062的錯誤,將給出錯誤提示,程序繼續運行。如:
1 2 |
|
在存儲過程當中MySQL的處理程序的例子
首先咱們建立一張數據表,爲測試所用。
1 2 3 4 5 |
|
article_tags表用來存儲文章及標籤之間的關係(多對多)。article_id存儲文章ID,tag_id存儲標籤ID
其次,咱們建立一個存儲過程,實現插入文章ID和標籤ID。
1 2 3 4 5 6 7 8 9 10 11 |
|