首页 > 解决方案 > 如果表中不存在参数,如何抛出错误处理程序?

问题描述

所以我有这个存储过程:

delimiter //
create procedure sp_finish_campaign(in c_title varchar(30))
begin 
    update campaign set CAMPAIGNFINISHDATE = CURDATE()
    where TITLE = c_title;
end//
delimiter ;

如果活动表中不存在 c_title 参数,我想知道如何抛出带有消息的错误处理程序。我试过使用

DECLARE EXIT HANDLER FOR SQLSTATE '42000' SELECT 'Error!';

和一些 if 语句,但要么语法错误,要么在字段列表中出现错误 1054 未知列标题。

标签: mysqlsqlstored-procedureserror-handling

解决方案


使用此代码:

create procedure sp_finish_campaign(in c_title varchar(30))
begin 
    update campaign set CAMPAIGNFINISHDATE = CURDATE()
    where TITLE = c_title;

    if @@rowcount=0
    begin
      DECLARE @ErrorMessage  NVARCHAR(4000);
      DECLARE @V_ErrorCode   INT;
      DECLARE @ErrorState    INT;

      SELECT @V_ErrorCode   = 50000 ,
             @ErrorMessage  = c_title+ ' is not exists' ,
             @ErrorState    = 1
      THROW @V_ErrorCode,@ErrorMessage,@ErrorState

    end
end//

推荐阅读