Mysql 在My SQL中找不到更新过程的错误处理
我正在尝试编写一个sql存储过程,当没有与输入值(c_title)对应的记录时,该过程将输出一条错误消息“error!Campaign title not existing”。 程序代码正在执行;但是,当我为不存在的值调用过程时,将不会显示错误消息Mysql 在My SQL中找不到更新过程的错误处理,mysql,sql,procedure,Mysql,Sql,Procedure,我正在尝试编写一个sql存储过程,当没有与输入值(c_title)对应的记录时,该过程将输出一条错误消息“error!Campaign title not existing”。 程序代码正在执行;但是,当我为不存在的值调用过程时,将不会显示错误消息 Delimiter // DROP PROCEDURE IF EXISTS sp_finish_campaign // CREATE PROCEDURE sp_finish_campaign (IN c_title varchar(30)) BEG
Delimiter //
DROP PROCEDURE IF EXISTS sp_finish_campaign //
CREATE PROCEDURE sp_finish_campaign (IN c_title varchar(30))
BEGIN
DECLARE not_found_indicator INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found_indicator = 1;
UPDATE campaign
SET
campaign.CAMPAIGNFINISHDATE = CURRENT_DATE(),
campaign.ACTUALCOST = cost_of_campaign(campaign.CAMPAIGN_NO)
WHERE campaign.TITLE = c_title
AND campaign.ACTUALCOST = null
AND campaign.CAMPAIGNFINISHDATE = null;
IF not_found_indicator = 1
THEN
SELECT 'ERROR! Campaign title does not exist' as 'msg';
ELSE
SELECT * FROM campaign
WHERE campaign.TITLE = c_title;
END IF;
END//
Delimiter ;
未找到更新不会触发处理程序。例如,处理需求的正常方法是进行存在性检查
drop procedure if exists p;
delimiter $$
CREATE PROCEDURE p (IN c_id int)
BEGIN
DECLARE not_found_indicator INT DEFAULT 0;
if not exists (select 1 from users where id = c_id) then
set not_found_indicator = 1;
end if;
IF not_found_indicator = 1
THEN
SELECT 'ERROR! Campaign title does not exist' as 'msg';
ELSE
UPDATE users seT status = 1 where id = c_id;
SELECT * FROM users WHERE id = c_id;
END IF;
END $$
Delimiter ;
call p(1999);