Как сгенерировать обработчик ошибок, если параметр не существует в таблице? - PullRequest
0 голосов
/ 25 октября 2019

Итак, у меня есть эта хранимая процедура:

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 неизвестного заголовка столбца в fieldlist.

1 Ответ

0 голосов
/ 25 октября 2019

используйте этот код:

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//
...