MySQL儲存過程的異常處理方法
本文例項講述了MySQL儲存過程的異常處理方法。分享給大家供大家參考。具體如下:
?
mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc -> (p_first_name VARCHAR (30), -> p_last_name VARCHAR (30), -> p_city VARCHAR (30), -> p_description VARCHAR (30), -> OUT p_sqlcode INT , -> OUT p_status_message VARCHAR (100)) -> BEGIN -> -> -> -> DECLARE duplicate_key CONDITION FOR 1062; -> DECLARE foreign_key_violated CONDITION FOR 1216; -> -> -> -> -> -> DECLARE l_manager_id INT ; -> -> DECLARE csr_mgr_id CURSOR FOR -> SELECT id -> FROM employee -> WHERE first_name=p_first_name -> AND last_name=p_last_name; -> -> -> -> -> -> DECLARE CONTINUE HANDLER FOR duplicate_key -> BEGIN -> SET p_sqlcode=1052; -> SET p_status_message= 'Duplicate key error' ; -> END ; -> -> DECLARE CONTINUE HANDLER FOR foreign_key_violated -> BEGIN -> SET p_sqlcode=1216; -> SET p_status_message= 'Foreign key violated' ; -> END ; -> -> DECLARE CONTINUE HANDLER FOR not FOUND -> BEGIN -> SET p_sqlcode=1329; -> SET p_status_message= 'No record found' ; -> END ; -> -> -> -> -> -> SET p_sqlcode=0; -> OPEN csr_mgr_id; -> FETCH csr_mgr_id INTO l_manager_id; -> -> IF p_sqlcode0 THEN
-> SET p_status_message=CONCAT(p_status_message, ' when fetching manager id' ); -> ELSE -> INSERT INTO employee (first_name,id,city) -> VALUES (p_first_name,l_manager_id,p_city); -> -> IF p_sqlcode0 THEN
-> SET p_status_message=CONCAT(p_status_message, -> ' when inserting new department' ); -> END IF; -> END IF; -> -> CLOSE csr_mgr_id; -> -> -> -> END $$ Query OK, 0 rows affected (0.02 sec) mysql> mysql> delimiter ; mysql> set @myCode = 0; Query OK, 0 rows affected (0.00 sec) mysql> set @myMessage = 0; Query OK, 0 rows affected (0.00 sec) mysql> mysql> call myProc( 'Jason' , 'Martin' , 'New City' , 'New Description' ,@myCode,@myMessage); Query OK, 1 row affected (0.00 sec) mysql> mysql> select @myCode, @myMessage; + ---------+------------+ | @myCode | @myMessage | + ---------+------------+ | 0 | NULL | + ---------+------------+ 1 row in set (0.00 sec) mysql> mysql> drop procedure myProc; Query OK, 0 rows affected (0.00 sec)
|
希望本文所述對大家的MySQL資料庫程式設計有所幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4729/viewspace-2811231/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 儲存過程定義條件和異常處理MySql儲存過程
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- MySQL儲存過程中捕獲異常的方法MySql儲存過程
- MySQL 儲存過程空結果集錯誤Error 1329 No data 的異常處理MySql儲存過程Error
- 異常處理過程
- oracle 儲存過程遊標中處理並記錄異常Oracle儲存過程
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- MySQL儲存過程-->通過遊標遍歷和異常處理遷移資料到歷史表MySql儲存過程
- 某次BW 異常處理過程
- 編譯儲存過程時被卡死的處理方法編譯儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- MySQL異常處理MySql
- mysql的儲存過程MySql儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- MySQL儲存過程中處理陣列 UDF程式碼分享MySql儲存過程陣列
- mysql 儲存過程MySql儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- mysql儲存過程的修改MySql儲存過程
- 一次資料庫異常的處理過程資料庫
- 異常處理方法 (轉)
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL 儲存過程中事務sql異常回滾MySql儲存過程
- mysql儲存過程整理MySql儲存過程
- MySQL之儲存過程MySql儲存過程
- [MYSQL -23儲存過程]MySql儲存過程
- MYSQL儲存過程管理MySql儲存過程
- mysql儲存過程例子MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- MVC使用異常過濾器處理異常MVC過濾器
- mysql儲存過程的引數MySql儲存過程
- 【Mysql】Mysql儲存過程學習MySql儲存過程
- tcbs_批量儲存過程_plsql事務_savepoint_異常儲存過程SQL
- [DB2]儲存過程經常使用方法DB2儲存過程
- Python入門學習 之 永久儲存、異常處理Python
- MySQL Slave異常關機的處理MySql
- vb呼叫儲存過程的方法儲存過程
- 異常處理遇到過的那些坑