Предоставляет ли SqlCommand с типом StoredProcedure внешнюю транзакцию?
У меня есть этот код для вызова хранимой процедуры:
//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
учебный класс?
1 ответ
Решение
SqlCommand
не генерирует автоматическую транзакцию.
Зависит ли транзакция хранимой процедуры от того, существует ли уже открытая транзакция в момент выполнения команды SQLCommand.
Если нет открытой транзакции, то BEGIN TRANS..COMMIT TRANS
в хранимой процедуре контролирует транзакцию.