以下代码就像魅力一样:
BEGIN TRY
BEGIN TRANSACTION
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK;
DECLARE @ErrorMessage NVARCHAR(4000),
@ErrorSeverity int;
SELECT @ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY();
RAISERROR(@ErrorMessage, @ErrorSeverity, 1);
END CATCH
但是这段代码给出了一个错误:
BEGIN TRY
BEGIN TRANSACTION
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK;
RAISERROR(ERROR_MESSAGE(), ERROR_SEVERITY(), 1);
END CATCH
为什么?
答案 0 :(得分:3)
RAISERROR()
无法将调用作为其参数。需要是常量或变量。
答案 1 :(得分:0)
+1 RAISERROR语句通过从sys.messages目录视图中检索消息或在运行时构造消息字符串来生成错误消息。所以同意@Mitch Wheat小伙伴,我会同意他的建议。