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

首頁 > 數據庫 > MySQL > 正文

MySQL存儲過程的異常處理方法

2024-07-24 13:07:42
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了MySQL存儲過程的異常處理方法,可實現有效調試MySQL存儲過程處理結果的功能,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了MySQL存儲過程的異常處理方法。分享給大家供大家參考。具體如下:

 

 
  1. mysql> 
  2. mysql> delimiter $ 
  3. mysql> 
  4. mysql> CREATE PROCEDURE myProc 
  5. -> (p_first_name VARCHAR(30), 
  6. -> p_last_name VARCHAR(30), 
  7. -> p_city VARCHAR(30), 
  8. -> p_description VARCHAR(30), 
  9. -> OUT p_sqlcode INT, 
  10. -> OUT p_status_message VARCHAR(100)) 
  11. -> BEGIN 
  12. -> 
  13. -> /* START Declare Conditions */ 
  14. -> 
  15. -> DECLARE duplicate_key CONDITION FOR 1062; 
  16. -> DECLARE foreign_key_violated CONDITION FOR 1216; 
  17. -> 
  18. -> /* END Declare Conditions */ 
  19. -> 
  20. -> /* START Declare variables and cursors */ 
  21. -> 
  22. -> DECLARE l_manager_id INT; 
  23. -> 
  24. -> DECLARE csr_mgr_id CURSOR FOR 
  25. -> SELECT id 
  26. -> FROM employee 
  27. -> WHERE first_name=p_first_name 
  28. -> AND last_name=p_last_name; 
  29. -> 
  30. -> /* END Declare variables and cursors */ 
  31. -> 
  32. -> /* START Declare Exception Handlers */ 
  33. -> 
  34. -> DECLARE CONTINUE HANDLER FOR duplicate_key 
  35. -> BEGIN 
  36. -> SET p_sqlcode=1052; 
  37. -> SET p_status_message='Duplicate key error'
  38. -> END; 
  39. -> 
  40. -> DECLARE CONTINUE HANDLER FOR foreign_key_violated 
  41. -> BEGIN 
  42. -> SET p_sqlcode=1216; 
  43. -> SET p_status_message='Foreign key violated'
  44. -> END; 
  45. -> 
  46. -> DECLARE CONTINUE HANDLER FOR not FOUND 
  47. -> BEGIN 
  48. -> SET p_sqlcode=1329; 
  49. -> SET p_status_message='No record found'
  50. -> END; 
  51. -> 
  52. -> /* END Declare Exception Handlers */ 
  53. -> 
  54. -> /* START Execution */ 
  55. -> 
  56. -> SET p_sqlcode=0; 
  57. -> OPEN csr_mgr_id; 
  58. -> FETCH csr_mgr_id INTO l_manager_id; 
  59. -> 
  60. -> IF p_sqlcode<>0 THEN /* Failed to get manager id*/ 
  61. -> SET p_status_message=CONCAT(p_status_message,' when fetching manager id'); 
  62. -> ELSE 
  63. -> INSERT INTO employee (first_name,id,city) 
  64. -> VALUES(p_first_name,l_manager_id,p_city); 
  65. -> 
  66. -> IF p_sqlcode<>0 THEN /* Failed to insert new department */ 
  67. -> SET p_status_message=CONCAT(p_status_message, 
  68. -> ' when inserting new department'); 
  69. -> END IF; 
  70. -> END IF; 
  71. -> 
  72. -> CLOSE csr_mgr_id; 
  73. -> 
  74. -> /* END Execution */ 
  75. -> 
  76. -> END$ 
  77. Query OK, 0 rows affected (0.02 sec) 
  78. mysql> 
  79. mysql> delimiter ; 
  80. mysql> set @myCode = 0; 
  81. Query OK, 0 rows affected (0.00 sec) 
  82. mysql> set @myMessage = 0; 
  83. Query OK, 0 rows affected (0.00 sec) 
  84. mysql> 
  85. mysql> call myProc('Jason','Martin','New City','New Description',@myCode,@myMessage); 
  86. Query OK, 1 row affected (0.00 sec) 
  87. mysql> 
  88. mysql> select @myCode, @myMessage; 
  89. +---------+------------+ 
  90. | @myCode | @myMessage | 
  91. +---------+------------+ 
  92. | 0 | NULL | 
  93. +---------+------------+ 
  94. 1 row in set (0.00 sec) 
  95. mysql> 
  96. mysql> drop procedure myProc; 
  97. Query OK, 0 rows affected (0.00 sec) 

希望本文所述對大家的MySQL數據庫程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金沙县| 奉新县| 呈贡县| 德江县| 吉安县| 昭觉县| 廊坊市| 平江县| 汾西县| 江川县| 囊谦县| 宁强县| 海城市| 花莲市| 弥渡县| 祁连县| 襄汾县| 武清区| 沙田区| 高陵县| 卫辉市| 房产| 梨树县| 西宁市| 昆明市| 桃园县| 武平县| 崇左市| 亚东县| 安泽县| 沧州市| 辽宁省| 太保市| 株洲市| 登封市| 黄陵县| 瑞安市| 玉林市| 民丰县| 黄平县| 弥渡县|