如何在儲存過程中編寫丟擲錯誤訊息並退出執行的MySQL處理器?
眾所周知,每當MySQL儲存過程中發生異常時,透過丟擲正確的錯誤訊息來處理它非常重要,因為如果不處理異常,儲存過程中的某些異常可能會導致應用程式失敗。MySQL提供了一個處理器,可以丟擲錯誤訊息並退出執行。為了演示這一點,我們使用下面的例子,在這個例子中,我們試圖在主鍵列中插入重複值。
示例
mysql> Delimiter // mysql> Create Procedure Insert_Studentdetails3(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20)) -> BEGIN -> DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT 'Got an error'; -> INSERT INTO Student_detail -> (Studentid, StudentName, Address) -> Values(S_Studentid,S_StudentName,S_Address); -> Select * from Student_detail; -> END // Query OK, 0 rows affected (0.00 sec) mysql> Delimiter ; mysql> CALL Insert_Studentdetails3(105, 'Mohan', 'Chandigarh'); +-----------+-------------+------------+ | Studentid | StudentName | address | +-----------+-------------+------------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | | 103 | Rahul | Jaipur | | 104 | Ram | Chandigarh | | 105 | Mohan | Chandigarh | +-----------+-------------+------------+ 5 rows in set (0.04 sec) Query OK, 0 rows affected (0.06 sec)
現在,如果我們嘗試新增列“studentid”的任何重複值,它將退出執行,它不會給出儲存過程“select * from student_detail”中編寫的查詢的結果集,只會給出錯誤訊息“出現錯誤”。
mysql> CALL Insert_Studentdetails3(105, 'Sohan', 'Bhopal'); +--------------+ | Got an error | +--------------+ | Got an error | +--------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP