MySQL 如何在存储过程中编写MySQL处理程序以抛出错误消息并终止执行?

MySQL 如何在存储过程中编写MySQL处理程序以抛出错误消息并终止执行?

我们知道,当MySQL存储过程中发生异常时,通过抛出适当的错误消息来处理异常非常重要,因为如果不处理异常,则存在应用程序在存储过程中以某些异常失败的可能性。MySQL提供了一个处理程序,用于抛出错误消息并终止执行。为了说明这一点,我们在以下示例中使用了一个尝试在主键列中插入重复值的示例。

阅读更多:MySQL 教程

示例

mysql> Delimiter //
mysql> Create Procedure Insert_Studentdetails3(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20))
    -> BEGIN
    -> DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT 'Got an error';
    -> INSERT INTO Student_detail
    -> (Studentid, StudentName, Address)
    -> Values(S_Studentid,S_StudentName,S_Address);
    -> Select * from Student_detail;
    -> END //
Query OK, 0 rows affected (0.00 sec)

mysql> Delimiter ;
mysql> CALL Insert_Studentdetails3(105, 'Mohan', 'Chandigarh');
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
|       100 | Gaurav      | Delhi      |
|       101 | Raman       | Shimla     |
|       103 | Rahul       | Jaipur     |
|       104 | Ram         | Chandigarh |
|       105 | Mohan       | Chandigarh |
+-----------+-------------+------------+
共5行记录(用时0.04秒)
Query OK, 0 rows affected (0.06 sec)

现在,如果我们尝试添加任何重复的“studentid”列值,它将退出执行,而不会给出存储过程中编写的查询的结果集,仅给出错误消息“got an error”。

mysql> CALL Insert_Studentdetails3(105, 'Sohan', 'Bhopal');
+--------------+
| Got an error |
+--------------+
| Got an error |
+--------------+
共1行记录(用时0.00秒)
Query OK, 0 rows affected (0.00 sec)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程