我有这个用于调用存储过程的代码:
//SqlConnection connection = ...;
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "usp_MyProc";
command.ExecuteNonQuery();
}
,存储过程如下:
CREATE PROCEDURE [dbo].[usp_MyProc]
AS
BEGIN
BEGIN TRAN
-- SOME STATEMENTS IN HERE
COMMIT TRAN
RETURN 0
END
事务是由那些BEGIN TRAN
和COMMIT TRAN
语句控制的还是由SqlCommand
类以某种方式引起的外部事务?
答案 0 :(得分:1)
SqlCommand
不会生成自动交易。
存储过程事务是否具有控制权取决于在执行SQLCommand时是否已存在打开的事务。
如果没有打开的事务,则存储过程中的BEGIN TRANS..COMMIT TRANS
将控制事务。