CREATE PROCEDURE [sp_Procedimiento]
@V1 VARCHAR(2),
@DesError VARCHAR(100) OUTPUT
AS
BEGIN
--------------------------- EMPEZAMOS TRANSACCIÓN ----------------------------
declare @TipoTransaccion char(1)
if @@TRANCOUNT= 0 ' -- Si no hay transacción activa, crear una nueva
BEGIN
BEGIN TRANSACTION NombreTransaccion
SET @TipoTransaccion = 'B'
END
else ' --- Si hay transaccion creamos un punto de guardado (para deshacer solo hasta ese punto)
BEGIN
SAVE TRANSACTION NombreTransaccion
SET @TipoTransaccion = 'S'
END
INSERT INTO NombreTabla (Campo1, campo2) VALUE (Valor1, Valor2)
if @@ERROR <> 0
BEGIN
Select @DesError = 'Error ' + convert(varchar, @@ERROR) + ', al insertar un registro'
GOTO TratarElError
END
.....................
......................
IF @TipoTransaccion='B'
COMMIT TRANSACTION NombreTransaccion
' Rechazamos la Transaccion
IF @@ERROR<>0 -- Ha habido errores
BEGIN
TratarElError:
-- Si se trata de una nueva transaccin la deshará completamente, si es un punto de guardado solo deshará hasta ese punto.
ROLLBACK TRANSACTION NombreTransaccion
END
END