Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda! Pasar errores a la aplicación

Estas en el tema de Ayuda! Pasar errores a la aplicación en el foro de Bases de Datos General en Foros del Web. Hola! Tengo un problema con la gestión de errores. ¡ Ayuda por favor! Tengo una aplicación web ASP VBScript que interactúa con una base de ...
  #1 (permalink)  
Antiguo 09/07/2003, 12:29
 
Fecha de Ingreso: marzo-2003
Mensajes: 38
Antigüedad: 21 años, 1 mes
Puntos: 0
Exclamación Ayuda! Pasar errores a la aplicación

Hola! Tengo un problema con la gestión de errores.
¡ Ayuda por favor!

Tengo una aplicación web ASP VBScript que interactúa con una base de datos SQL Server. Estoy intentando manejar los posibles errores cuando se hacen operaciones en la base de datos, como insertar, modificar, borrar, etc, .. Estas operaciones las llevo a cabo mediante procedimientos almacenados en SQL Server.

Lo que quiero hacer es capturar el posible error en el procedimiento almacenado, para después pasarlo a la aplicación web y decidir qué hacer. Esto lo hago de la siguiente forma en el sp:

Declare @Error_num int
Declare @Severity smallint

INSERT INTO Inscripciones_en_ofertas (Oferta_num, Demandante_num, Data, Motivos_interes)
VALUES (@Oferta_num, @Demandante_num, @Data, @Motivos_interes)

SELECT @Error_num = @@ERROR
IF (@Error_num<>0)
SELECT @severity = severity FROM sysmessages
WHERE @Error_num = error
SELECT @severity AS error_severity
END

** Selecciono @severity porque es lo que determina si la operación se ha llevado a cabo correctamente o no, en caso que me devuelva un numero entre 11 y 16 saldrá un mensaje en el web que diga que el usuario ha introducido mal los datos, si devuelve entre 17 y 19 que salga un mensaje que diga que por causas ajenas al usuario la operación ha fallado. ¿Todo esto correcto? Me han dicho que haga servir el número de error que da @@ERROR, pero para empezar estos números no son únicos, hay de duplicados y además este número por si sólo no determina si la acción se llevó a cabo o no, esto lo determina el nivel de severidad ‘severity’ ¿no es así?


** ¿Está bien escrito el procedimiento almacenado? Cuando lo ejecuto desde la aplicación NO ME APARECE LA VARIABLE @severity, pero sí aparece cuando lo ejecuto en el Analizador de Consultas.

** A mí me interesaría que todos los errores que fuera produciendo SQL se registraran en algún sitio para yo después revisarlos e ir corrigiendo. ¿Es posible esto?


Gracias,
Cesar
  #2 (permalink)  
Antiguo 11/07/2003, 19:09
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
A ver

Declare @Error_num int,
@Severity smallint

INSERT INTO Inscripciones_en_ofertas (Oferta_num, Demandante_num, Data, Motivos_interes)
VALUES (@Oferta_num, @Demandante_num, @Data, @Motivos_interes)
SELECT @Error_num = @@ERROR
/*y esto donde lo aprendiste? */

IF (@Error_num<>0)
BEGIN /* esto faltaba */
SELECT @severity = severity
FROM sysmessages
WHERE @Error_num = error

SELECT @severity AS error_severity
END

Ahora, veamos. Bien jugado lo de levantar severity si es que te interesa mostrarle a alguien el error. Pero una vez que termines la depuracion, mejor quitalo, ya que dejar eso dentro de un SP no tendria sentido alguno.

Puedes crear una tabla temporal con CREATE TABLE #(nombre) y poner alli todos los errores y terminar tu sp con un SELECT * FROM #(nombre) pero te recomiendo que luego lo elimines
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 13/07/2003, 05:14
 
Fecha de Ingreso: marzo-2003
Mensajes: 38
Antigüedad: 21 años, 1 mes
Puntos: 0
Ok Mickel, gracias. Provaré con esto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:35.