Manejar error detectado en medio de un SP

09/01/2005 - 04:55 por Jose | Informe spam
Desde mi aplicacion abro una transaccion (begin trans) luego ejecuto varios
SP para luego hacer el commit.
Mi problema es que dentro de cada SP puede ocurrir un error luego de cada
instruccion y necesito que si en un SP ocurre el error yo pueda retornar a
la aplicacion un estatus de error para saber que no concluyo correctamente
ese SP para hacer un rollback desde la aplicacion.

En otras palabras, como puedo cancelar la ejecucion de un SP luego de un
error y que devuelva el SP un estatus de error como valor de retorno a la
aplicacion para poder hacer un rollback. y no seguir ejecutando mas
instrucciones ?

Preguntas similare

Leer las respuestas

#1 ulises
09/01/2005 - 16:49 | Informe spam
EL procedimiento almacenado puede retornar un error con RETURN, de esa
manera cuando ejecues el procedimiento puedes verificar si se ejecutò
correctamente, algo como :

DECLARE @returnvalue int
...
EXEC @returnvalue = procedimientoalmacenado1 ...
IF @returnvalue <> 0
BEGIN
ROLLBACK
RETURN 99
END
...

Saludos,
Ulises

On Sat, 8 Jan 2005 23:55:34 -0400, "Jose"
wrote:

Desde mi aplicacion abro una transaccion (begin trans) luego ejecuto varios
SP para luego hacer el commit.
Mi problema es que dentro de cada SP puede ocurrir un error luego de cada
instruccion y necesito que si en un SP ocurre el error yo pueda retornar a
la aplicacion un estatus de error para saber que no concluyo correctamente
ese SP para hacer un rollback desde la aplicacion.

En otras palabras, como puedo cancelar la ejecucion de un SP luego de un
error y que devuelva el SP un estatus de error como valor de retorno a la
aplicacion para poder hacer un rollback. y no seguir ejecutando mas
instrucciones ?



Respuesta Responder a este mensaje
#2 Luis Enrique García A.
11/01/2005 - 16:49 | Informe spam
Adicionalmente dentro del sp, puedes hacer uso de 2 variables de sistema
para generar validaciones propias :)

@@error
@@rowcount


nosotros la usamos asi:

insert into tabla
select * from tabla2
if @@error <> 0 or @@rowcount = 0
begin
rollback tran
return 15
end

el return de SQL es diferente de 0 solo cuando ocurre un error, en el
supuesto anterior, mi instruccion SQL es correcta, pero valido que haya
insertado informacion, si no genero el error manualmente :)

Si deseas, puedes crear tus propios mensajes RAISE o utilizar los de SQL
Server, revisa RAISERROR en los BOL.


Luis E.

"ulises" escribió en el mensaje
news:
EL procedimiento almacenado puede retornar un error con RETURN, de esa
manera cuando ejecues el procedimiento puedes verificar si se ejecutò
correctamente, algo como :

DECLARE @returnvalue int
...
EXEC @returnvalue = procedimientoalmacenado1 ...
IF @returnvalue <> 0
BEGIN
ROLLBACK
RETURN 99
END
...

Saludos,
Ulises

On Sat, 8 Jan 2005 23:55:34 -0400, "Jose"
wrote:

>Desde mi aplicacion abro una transaccion (begin trans) luego ejecuto


varios
>SP para luego hacer el commit.
>Mi problema es que dentro de cada SP puede ocurrir un error luego de cada
>instruccion y necesito que si en un SP ocurre el error yo pueda retornar


a
>la aplicacion un estatus de error para saber que no concluyo


correctamente
>ese SP para hacer un rollback desde la aplicacion.
>
>En otras palabras, como puedo cancelar la ejecucion de un SP luego de un
>error y que devuelva el SP un estatus de error como valor de retorno a la
>aplicacion para poder hacer un rollback. y no seguir ejecutando mas
>instrucciones ?
>
>
>

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