Mysql 在My SQL中找不到更新过程的错误处理

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

我正在尝试编写一个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))
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);