elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Retornar el número de error de un stored procedure en SQL Server
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Retornar el número de error de un stored procedure en SQL Server  (Leído 2,496 veces)
DanteInfernum

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Retornar el número de error de un stored procedure en SQL Server
« en: 1 Octubre 2013, 21:15 »

Quiero crear un procedimiento que en caso de error me retorne el número del error.
Tengo el siguiente código:

Código
  1. CREATE PROCEDURE proc4
  2. @idSeccion NCHAR(3),
  3. @descripcion VARCHAR(20)
  4. AS
  5. BEGIN
  6. INSERT INTO Secciones
  7. VALUES(@idSeccion, @descripcion)
  8. IF @@ERROR <> 0
  9. BEGIN
  10. RETURN @@ERROR
  11. END
  12. ELSE
  13. BEGIN
  14. RETURN 1
  15. END
  16. END
  17.  

Pero, a pesar de producirse el error, siempre me devuelve 0.
¿Cuál sería la forma correcta de conseguir esto? ¿Qué estoy haciendo mal?


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.704


WOS & Khan & Calero LDN


Ver Perfil WWW
Re: Retornar el número de error de un stored procedure en SQL Server
« Respuesta #1 en: 1 Octubre 2013, 21:32 »

Código
  1. BEGIN TRY
  2.    SELECT 1/0;
  3. END TRY
  4. BEGIN CATCH
  5.    SELECT ERROR_NUMBER() AS 'ERROR_NUMBER()', @@ERROR AS '@@ERROR';
  6. END CATCH;

Resultado:
Código
  1. ERROR_NUMBER()   @@ERROR
  2. 8134         8134


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
DanteInfernum

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Retornar el número de error de un stored procedure en SQL Server
« Respuesta #2 en: 2 Octubre 2013, 15:43 »

Sí, está bien. Tendría que haber aclarado que estoy usando SQL Server 2005. Por lo que he leído esta versión no admite los bloques TRY y CATCH.
En línea

DanteInfernum

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Retornar el número de error de un stored procedure en SQL Server
« Respuesta #3 en: 2 Octubre 2013, 16:13 »

¡Encontré la solución!

Resulta que la variable @@error cambia constantemente de valor. Específicamente, se modifica cada vez que se ejecuta una sentencia. En este caso, si bien se produce un error al insertar el registro, luego la sentencia IF se ejecuta sin problema alguno, de ahí que el valor de @@error se reinicializa a 0.
Lo que hay que hacer para evitar esto, es guardar el valor de @@error en una variable.

Código
  1. ALTER PROCEDURE proc4
  2. @idSeccion NCHAR(3),
  3. @descripcion VARCHAR(20)
  4. AS
  5. BEGIN
  6. DECLARE @error INT
  7. INSERT INTO Secciones
  8. VALUES(@idSeccion, @descripcion)
  9. SET @error = @@ERROR
  10. IF @error <> 0
  11. BEGIN
  12. RETURN @error
  13. END
  14. ELSE
  15. BEGIN
  16. RETURN 1
  17. END
  18. END
  19.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines