Hola a todos:
Tengo una serie de sp's que tienen varias sentencias que deben
estas transaccionadas, pero estos sps se pueden llamar con o sin una
transaccion abierta desde ADO.NET.
Viendo que ROLLBACK dehace todas las transacciones abiertas y
COMMIT confirma la última transacción abierta,
¿esta bien el siguiente código?
DECLARE @TRANCOUNT_INICIAL INT
SET @TRANCOUNT_INICIAL = @@TRANCOUNT
INSERT/UPDATE...
IF @@ERROR <>0
BEGIN
IF @@TRANCOUNT > @TRANCOUNT_INICIAL
ROLLBACK TRAN
RETURN @@ERROR
END
INSERT/UPDATE...
IF @@ERROR <>0
BEGIN
IF @@TRANCOUNT > @TRANCOUNT_INICIAL
ROLLBACK TRAN
RETURN @@ERROR
END
...
ELSE
BEGIN
IF @@TRANCOUNT > @TRANCOUNT_INICIAL
COMMIT TRAN
END
Gracias.
Leer las respuestas