tsql事务
为了在事务中包装存储过程,我添加了以下内容:tsql事务,sql,sql-server,tsql,Sql,Sql Server,Tsql,为了在事务中包装存储过程,我添加了以下内容: 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 @ErrM
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
有没有比这更短的方法呢?这是一个巨大的代码块,用于“仅”处理事务。不,这几乎就是它 您可以将@ErrMsg处理隐藏在存储的proc或UDF后面,而不需要@ErrSeverity处理。通常为16,这是“用户定义错误”
请在此处查看我的答案:@gbn:您的答案中没有计数的原因是什么?@Naor:“xx行受影响”会向客户端返回一个额外的记录集。它还破坏了一些orm和一些客户机。请看我的问题@gbn:那么您在所有存储过程中都设置了SET NOCOUNT?@Naor:是的,并将XACT_ABORT设置为ONtoo@gbn:我的意思是,您在每个存储过程中都设置了SET NOCOUNT,即使它不包含事务?