MSSQL- Raiserror 会适时显示错误但不会停止插入

MSSQL- Raiserror will display error at right time but will not stop insertion

我目前正在 MSSQL 中构建存储过程以将信用卡插入我的数据库。

我检查一下 IF 语句中的 CC 是否全是数字 [0-9] 和不是全数字 [0-9]RAISERROR

问题是 RAISERROR 正在捕获错误并在网页上显示错误消息,但它仍然将错误数据插入我的 table。

有什么想法吗?

这是我的代码:

-- 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 之后添加 return 语句。

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 年或更高版本,我实际上会使用 throw 而不是 raiserror。 Throw 将导致语句批处理终止。

http://sqlhints.com/2013/06/30/differences-between-raiserror-and-throw-in-sql-server/