我目前正在MSSQL中构建一个存储过程,以将信用卡插入我的数据库中。
我有检查查看IF
语句中的CC是否为[0-9]
,而RAISERROR
并非全部Digits [0-9]
。
问题是RAISERROR
正在捕获错误并在网页上显示错误消息,但仍将不良数据插入我的表中。
有什么想法吗?
这是我的代码:
-- Checking to see that @CC is composed of number [0-9]
declare @error_message9 varchar(225)
if not(@CC like '%[0-9]%+$')
Begin
set @error_Message9 = 'Error[9]: [ ' + @CC + ' ] is not a vaild number. CC must contain all numbers [0-9]'
raiserror(@error_Message9, 16, 1)
End
raiserror之后添加返回语句。
if not(@CC like '%[0-9]%+$')
Begin
set @error_Message9 = 'Error[9]: [ ' + @CC + ' ] is not a vaild number. CC must contain all numbers [0-9]'
raiserror(@error_Message9, 16, 1)
return
End
如果您在SQL 2012或更高版本上,我实际上会使用投掷而不是Raiserror。投掷将导致语句批次终止。
http://sqlhints.com/2013/06/30/differences-between-raiserror-and-and-throw-inw-inw-in-sql-server/