一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術|

服務器之家 - 數(shù)據(jù)庫 - Mysql - MySQL存儲過程的異常處理方法

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

2020-05-15 15:30鑒客 Mysql

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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
  ->
  -> /* START Declare Conditions */
  ->
  ->  DECLARE duplicate_key CONDITION FOR 1062;
  ->  DECLARE foreign_key_violated CONDITION FOR 1216;
  ->
  -> /* END Declare Conditions */
  ->
  -> /* START Declare variables and cursors */
  ->
  ->   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;
  ->
  -> /* END Declare variables and cursors */
  ->
  -> /* START Declare Exception Handlers */
  ->
  ->  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;
  ->
  -> /* END Declare Exception Handlers */
  ->
  -> /* START Execution */
  ->
  ->  SET p_sqlcode=0;
  ->  OPEN csr_mgr_id;
  ->  FETCH csr_mgr_id INTO l_manager_id;
  ->
  ->  IF p_sqlcode<>0 THEN      /* Failed to get manager id*/
  ->   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_sqlcode<>0 THEN   /* Failed to insert new department */
  ->    SET p_status_message=CONCAT(p_status_message,
  ->              ' when inserting new department');
  ->   END IF;
  ->  END IF;
  ->
  ->  CLOSE csr_mgr_id;
  ->
  -> /* END Execution */
  ->
  -> 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數(shù)據(jù)庫程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 白鹿扒开内裤露出尿孔 | s0e一923春菜花在线播放 | 亚洲精品青青草原avav久久qv | 激情五月开心 | 久久学生精品国产自在拍 | freefron性中国国产高清 | 2018天天拍拍拍免费视频 | 亚洲欧美精品天堂久久综合一区 | porono日本动漫 | 国产婷婷成人久久av免费高清 | 国产90后美女露脸在线观看 | 日产精品一二三四区国产 | 特级淫片欧美高清视频蜜桃 | 成人网免费视频 | 亚洲精品 欧美 | 俄罗斯伦理片 | 国色天香视频资源网 | 日本老妇乱子伦中文视频 | 国产三级自拍 | 公妇乱淫在线播放免费观看 | 午夜网 | 欧美午夜性春猛交bbb | 丝袜兔女郎被啪在线观看91 | 国产成人在线小视频 | 欧美综合亚洲图片综合区 | 久草在在线免视频在线观看 | 5g在线观看 | 亚洲精品国产成人 | 免费精品视频在线 | 加勒比久草 | 日韩欧一级毛片在线播无遮挡 | 美国雪白人妖sarina | 91亚洲在线| 91精品国产综合久久 | 精品国产乱码久久久久久软件 | 91久久青青草原线免费 | 青草社区视频 | 四虎最新紧急更新地址 | 啊好大好爽 | 特黄特色大片免费视频播放 | 韩国理论三级在线观看视频 |