Nao*_*aor 5 sql t-sql sql-server
为了在事务中包装存储过程,我添加以下内容:
CREATE PROCEDURE [dbo].[P_ORD_InsertTextField]
//PARAMS
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
//STP BODY
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
END
GO
Run Code Online (Sandbox Code Playgroud)
有没有更短的方式做同样的事情?这是"只是"处理事务的巨大代码块.
不,差不多就是这样了。
您可以将 @ErrMsg 处理隐藏在存储过程或 UDF 后面,并且不需要 @ErrSeverity 处理。通常是 16,这是“用户定义的错误”
请也在这里查看我的答案:Nestedstored procedure contains TRY CATCH ROLLBACK pattern?