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

首頁 > 數據庫 > MySQL > 正文

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

2020-01-18 22:49:20
字體:
來源:轉載
供稿:網友

本文實例講述了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  ->  -> /* 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數據庫程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙岩市| 印江| 介休市| 尼勒克县| 河东区| 北海市| 驻马店市| 盈江县| 玉树县| 泸溪县| 江达县| 钦州市| 永康市| 杨浦区| 天水市| 东山县| 平阴县| 当涂县| 沐川县| 临潭县| 南雄市| 普洱| 浦江县| 富顺县| 锡林浩特市| 姚安县| 永新县| 安阳县| 城口县| 吴堡县| 阿克陶县| 永和县| 望江县| 洛隆县| 胶南市| 西昌市| 南华县| 十堰市| 临颍县| 惠州市| 华安县|