MySQL 为游标NOT FOUND条件设置处理程序


本MySQL教程将学习如何在MySQL中设置游标NOT FOUND条件的处理程序。

如果试图从游标获取数据,结果没有数据行,那么MySQL将产生一个no data的错误。可以为NOT FOUND条件设置处理程序,这样存储过程就不会因为错误而被终止。

语法

在MySQL中为游标的NOT FOUND条件设置处理程序的语法为:

1
DECLARE CONTINUE HANDLER FOR NOT FOUND [ set_condition ];
参数 说明
set_condition 游标遇到NOT FOUND时要设置的条件。

示例

让我们看一下如何在MySQL中为游标的NOT FOUND条件设置处理程序。

首先,我们需要声明一个变量,该变量将在发生NO DATA错误时被设置。

1
DECLARE done INT DEFAULT FALSE;

接下来,我们需要声明游标。

1
2
3
4
DECLARE c1 CURSOR FOR
SELECT site_id
FROM sites
WHERE site_name = name_in;

最后,我们需要为游标的NOT FOUND声明一个处理程序。

1
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

这样在存储过程中就不会因错误而终止:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

</td>

DELIMITER //
CREATE FUNCTION FindSiteID ( name_in VARCHAR(50) )
RETURNS INT
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE siteID INT DEFAULT 0;
DECLARE c1 CURSOR FOR
SELECT site_id
FROM sites
WHERE site_name = name_in;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN c1;
FETCH c1 INTO siteID;
CLOSE c1;
RETURN siteID;
END; //
DELIMITER ;


原文链接:https://codingdict.com/