有一个小问题,如果我正确地使用这些疑惑。
在我的SQL脚本是有
BEGIN TRY
// check some information and if there are certains errors
RAISERROR ('Errors found, please fix these errors and retry', 1, 2) WITH SETERROR
// Complete normal process if no errors encountered above
PRINT 'IMPORT SUCCEEDED'
END TRY
BEGIN CATCH
PRINT 'IMPORT ABORTED. ERRORS ENCOUNTERED'
END CATCH
然而,这是遇到错误,然后用脚本的其余部分继续进行。 我在想什么? 谢谢!
这是因为RAISERROR的严重程度还不够高,需要在11和19之间,如所描述这里
如
RAISERROR ('Errors found, please fix these errors and retry', 16, 2) WITH SETERROR
我认为你需要一个严重级别高于10引发错误它被抓住,如
RAISERROR ('Errors found', 11, 2) WITH SETERROR
从MSDN
严重
与此消息相关联的用户定义的严重级别。 从0严重性级别到18可以被任何用户使用。 从19到25之间的严重级别仅由sysadmin固定服务器角色的成员使用。 对于19到25之间的严重级别,在WITH LOG选项是必需的。
从20到25 注意事项严重级别被认为是致命的。 如果遇到致命的严重程度,所述客户端连接被接收到该消息之后,终止,并记录在错误日志和应用程序日志中的错误。
试试这个:
RAISERROR ('Errors found, please fix these errors and retry', 1, 2) WITH SETERROR
RETURN