0

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

我检查一下 CC 是否是语句[0-9]中的所有数字,以及当它不是所有数字时。IFRAISERROR[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
4

2 回答 2

0

在 raiseerror 之后添加一个 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
于 2015-05-13T14:54:24.027 回答
0

如果您使用的是 SQL 2012 或更高版本,我实际上会使用 throw 而不是 raiserror。Throw 将导致语句批处理终止。

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

于 2015-05-13T14:58:28.580 回答