Detectar @@error luego de llamada a SP

11/02/2005 - 04:55 por Alonso | Informe spam
Hola a todos.

Si dentro de un SP yo tengo una llamada a otro SP, por ejemplo:


EXEC a_subSP with @para1

Y ocurre algun error interno en alguna sentencia del a_subSP, yo puedo
preguntar por @@error aqui ?


EXEC a_subSP with @para1
IF @@ERROR <> 0 RETURN 99

O ya no esta disponible a este nivel ?


Gracias

Alonso

Preguntas similare

Leer las respuestas

#1 Eladio Rincón
11/02/2005 - 09:30 | Informe spam
Hola,

el error está disponible sólo inmediatamente después de suceder:

declare @e1 int, @e2 int
select 1/0
set @e1 = @@error
set @e2 = @@error
select @e1, @e2

fijate que sólo se rellena @e1

podrías codificar algo como esto:

create proc tu_proc
@error int OUT
AS
...
set @error = @@error
if @error <>0
return @error

en 2005 tendremos TRY ... CATCH al estilo .NET que ayudarán a gestionar
mejor los errores...

Si necesitas algo más de ayuda publica el procedimiento y miramos a ver ...

Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Alonso" wrote in message
news:O6j860#
Hola a todos.

Si dentro de un SP yo tengo una llamada a otro SP, por ejemplo:


EXEC a_subSP with @para1

Y ocurre algun error interno en alguna sentencia del a_subSP, yo puedo
preguntar por @@error aqui ?


EXEC a_subSP with @para1
IF @@ERROR <> 0 RETURN 99

O ya no esta disponible a este nivel ?


Gracias

Alonso


Respuesta Responder a este mensaje
#2 qwalgrande
11/02/2005 - 10:00 | Informe spam
Hola.

Mientras en el sp interno no tengas ninguna instrucción tras el error que
resetee el @@error, lo tendrás ahí. Pero lo que yo haría sería hacer que el
return del sp interno devuelva el @@error para los casos de errores que no
hayas ya contemplado.

qwalgrande


"Alonso" wrote in message
news:O6j860%
Hola a todos.

Si dentro de un SP yo tengo una llamada a otro SP, por ejemplo:


EXEC a_subSP with @para1

Y ocurre algun error interno en alguna sentencia del a_subSP, yo puedo
preguntar por @@error aqui ?


EXEC a_subSP with @para1
IF @@ERROR <> 0 RETURN 99

O ya no esta disponible a este nivel ?


Gracias

Alonso
Respuesta Responder a este mensaje
#3 Alejandro Mesa
11/02/2005 - 14:29 | Informe spam
Alonso,

Si de forma standard devuelves valor 0 para indicar que el procedimiento
termino de forma correcta, o un numero diferente de 0 para indicar que hubo
algun error, entonces deberias consultar ambos valores (valor de retorno del
sp y @@error).

Ejemplo:

declare @rv int
declare @error int

set @rv = 1

execute @rv = dbo.usp_proc1 @par1 = ...

set @error = coalesce(nullif(@rv, 0), @@error)

if @error <> 0
...


AMB

"Alonso" wrote:

Hola a todos.

Si dentro de un SP yo tengo una llamada a otro SP, por ejemplo:


EXEC a_subSP with @para1

Y ocurre algun error interno en alguna sentencia del a_subSP, yo puedo
preguntar por @@error aqui ?


EXEC a_subSP with @para1
IF @@ERROR <> 0 RETURN 99

O ya no esta disponible a este nivel ?


Gracias

Alonso



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