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光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- mysql 儲存過程MySql儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- mysql儲存過程整理MySql儲存過程
- MySQL之儲存過程MySql儲存過程
- Python入門學習 之 永久儲存、異常處理Python
- mysql儲存過程的引數MySql儲存過程
- MVC使用異常過濾器處理異常MVC過濾器
- mysql如何呼叫儲存過程MySql儲存過程
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- 異常處理遇到過的那些坑
- Mysql 5.7儲存過程的學習MySql儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- mySql 儲存過程與函式MySql儲存過程函式
- MySQL 儲存過程和函式MySql儲存過程函式
- Laravel 中使用 MySQL 儲存過程LaravelMySql儲存過程
- MySql資料庫——儲存過程MySql資料庫儲存過程
- MySQL儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- Nginx部署HTTPS服務過程與異常處理實踐NginxHTTP
- 異常的處理
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- nodejs程式異常退出處理方法NodeJS
- 異常-throws的方式處理異常
- 異常篇——異常處理
- MySQL的寫入資料儲存過程MySql儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- 異常處理
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- MySQL--儲存過程與檢視MySql儲存過程
- MySQL儲存過程語句及呼叫MySql儲存過程
- 【SQL Server】常見系統儲存過程SQLServer儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- php錯誤與異常處理方法PHP
- MySQL的物理儲存結構和session過程MySqlSession