manejo de varios errores en procedimientos almacenados

10/08/2006 - 16:03 por Hugo Gsell | Informe spam
Hola.
Tengo un procedimiento almacenado que hace 2 actualizaciones (ver abajo):
La pregunta es.. ¿Luego de cada operacion insert debo hacer el control del
rollback... comminttran?

BEGIN transaction
INSERT INTO Tabla1 (campo1, campo2) VALUES (val1, val2)
SET @error = @@error
INSERT INTO Tabla2 (campo1, campo2) VALUES (val1, val2)
SET @error = @@error
SET @error = @@error

IF @error != 0
BEGIN
ROLLBACK TRANSACTION
END
ELSE
BEGIN
COMMIT TRANSACTION
SET @nIdExpte= @NuevoNro
END

Preguntas similare

Leer las respuestas

#6 Maxi
10/08/2006 - 17:40 | Informe spam
Si todo esto lo tenes en un SP para que termine deberia poner RETURN 99.
Sino tambien podes aplicar el metodo de Ale


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Hugo Gsell" escribió en el mensaje
news:%
otra duda... si lo hago así y ocurre un error en el primer INSERT.
deshace la transacción pero ¿Continua ejecutando el siguiente insert?

Hugo A. Gsell
Sgo del Estero
Argentina


"Maxi" escribió en el mensaje
news:%
Hola, es una lastima no saber que version estas usando de SQL ya que ha
cambiado mucho desde la 2k a la 2005. Voy a suponer que tenes sql2000

BEGIN transaction
INSERT INTO Tabla1 (campo1, campo2) VALUES (val1, val2)
SET @error = @@error

IF @error != 0
BEGIN
ROLLBACK TRANSACTION
END



INSERT INTO Tabla2 (campo1, campo2) VALUES (val1, val2)
SET @error = @@error

IF @error != 0
BEGIN
ROLLBACK TRANSACTION
END

COMMIT TRANSACTION
SET @nIdExpte= @NuevoNro



Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Hugo Gsell" escribió en el mensaje
news:
Hola.
Tengo un procedimiento almacenado que hace 2 actualizaciones (ver
abajo):
La pregunta es.. ¿Luego de cada operacion insert debo hacer el control
del rollback... comminttran?

BEGIN transaction
INSERT INTO Tabla1 (campo1, campo2) VALUES (val1, val2)
SET @error = @@error
INSERT INTO Tabla2 (campo1, campo2) VALUES (val1, val2)
SET @error = @@error
SET @error = @@error

IF @error != 0
BEGIN
ROLLBACK TRANSACTION
END
ELSE
BEGIN
COMMIT TRANSACTION
SET @nIdExpte= @NuevoNro
END











Respuesta Responder a este mensaje
#7 Alejandro Mesa
10/08/2006 - 20:02 | Informe spam
Hugo,

No entiendo bien tu pregunta. Te recomiendo leas los articulos que adjunto
en el e-mail anterior, te ayudaran a entender mejor como SQL Server 2000
maneja los errores.


AMB

"Hugo Gsell" wrote:

Si el if error antes del 'procedimiento' anda bien ahí nomás termina?
o sea.. NO SE EJECUTA lo que esta dentro del errorhandler... es decir, sql
encuentra un nombre de procedimiento (rutina)
interna ahí vuelve? o sea termina?


> ErrorHandler:
> if @error != 0

"Alejandro Mesa" escribió en el
mensaje news:
> Hugo,
>
> Cancela la transaccion tan pronto encuentras un error.
>
> BEGIN transaction
> INSERT INTO Tabla1 (campo1, campo2) VALUES (val1, val2)
>
> SET @error = @@error
>
> if @error != 0 goto ErrorHandler
>
> INSERT INTO Tabla2 (campo1, campo2) VALUES (val1, val2)
>
> SET @error = @@error
>
> if @error != 0 goto ErrorHandler
>
> ErrorHandler:
>
> if @error != 0
> rollback transaction
> else
> commit transaction
>
> return @error
> go
>
>
> Error Handling in SQL Server - a Background
> http://www.sommarskog.se/error-handling-I.html
>
> Implementing Error Handling with Stored Procedures
> http://www.sommarskog.se/error-handling-II.html
>
>
> AMB
>
> "Hugo Gsell" wrote:
>
>> Hola.
>> Tengo un procedimiento almacenado que hace 2 actualizaciones (ver abajo):
>> La pregunta es.. ¿Luego de cada operacion insert debo hacer el control
>> del
>> rollback... comminttran?
>>
>> BEGIN transaction
>> INSERT INTO Tabla1 (campo1, campo2) VALUES (val1, val2)
>> SET @error = @@error
>> INSERT INTO Tabla2 (campo1, campo2) VALUES (val1, val2)
>> SET @error = @@error
>> SET @error = @@error
>>
>> IF @error != 0
>> BEGIN
>> ROLLBACK TRANSACTION
>> END
>> ELSE
>> BEGIN
>> COMMIT TRANSACTION
>> SET @nIdExpte= @NuevoNro
>> END
>>
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida