mysql - 如果表中不存在参数,如何抛出错误处理程序?
问题描述
所以我有这个存储过程:
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 未知列标题。
解决方案
使用此代码:
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//
推荐阅读
- sql-server - SQL Server:无法使用 where 语句从临时表中检索值
- php - Laravel API 资源
- paypal - Paypal Sync Api last_refreshed_datetime - 这是什么意思,它多久刷新一次?
- python - Python Pandas - 根据日期对表中的值应用过滤器
- pytorch - 不使用多处理但在使用 PyTorch DataLoader 时在 google colab 上出现 CUDA 错误
- python - 无法使用 python 在 tkinter 中将图像显示为背景
- amazon-s3 - S3 Blob 的唯一资源标识符
- vue.js - Vuetify 在数据表中插入操作按钮并获取行数据
- javascript - 在 javascript 中否定正则表达式中的模式时出错
- javascript - 在条件下重新调用 $.ajax