Inicio > Transact-SQL > TRY…CATCH con XACT_STATE

TRY…CATCH con XACT_STATE


Uso del Try Catcu con XACT_STATE

XACT_STATE () : Función escalar que notifica el estado de la transacción de usuario de una solicitud que se está ejecutando actualmente. XACT_STATE indica si la solicitud tiene una transacción de usuario activa y si se puede confirmar la transacción.

USE AdventureWorks;
GO

— Compruebe si este procedimiento almacenado existe
IF OBJECT_ID (N’usp_GetErrorInfo’, N’P’) IS NOT NULL
DROP PROCEDURE usp_GetErrorInfo;
GO

— Crear un procedimiento para recuperar información de error.
CREATE PROCEDURE usp_GetErrorInfo
AS
SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState, ERROR_LINE () AS ErrorLine
,ERROR_PROCEDURE() AS ErrorProcedure, ERROR_MESSAGE() AS ErrorMessage;
GO

— Función escalar que notifica el estado de la transacción de usuario de una
— solicitud que se está ejecutando actualmente.
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION PRUEBAXACT_ABORT;

DELETE FROM Production.Product
WHERE ProductID = 980;

— Si no genera error se ejecuta el COMMIT
COMMIT TRANSACTION PRUEBAXACT_ABORT;
END TRY
BEGIN CATCH
— Ejecuta el procedimiento almacenado de error
EXECUTE usp_GetErrorInfo;

— Compruebe si la transacción es uncommittable.
IF (XACT_STATE()) = -1
BEGIN
PRINT ‘La operación está en un estado confirmable.’ + ‘Rolling back Transaction PRUEBAXACT_ABORT.’
ROLLBACK TRANSACTION PRUEBAXACT_ABORT;
END;

— Compruebe si la transacción es committable.
IF (XACT_STATE()) = 1
BEGIN
PRINT ‘La transacción es committable.’ + ‘Committing transaction.’
COMMIT TRANSACTION PRUEBAXACT_ABORT;
END;
END CATCH;
GO

Categorías:Transact-SQL
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: