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

Error en ejemplo de controles de errores Try y Catch

Estas en el tema de Error en ejemplo de controles de errores Try y Catch en el foro de SQL Server en Foros del Web. Hola, que tal! Estoy realizando un ejemplo de los controles de errores Try y Catch para sql server 2005 con este siguiente ejemplo: Código: BEGIN ...
  #1 (permalink)  
Antiguo 13/08/2012, 13:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Error en ejemplo de controles de errores Try y Catch

Hola, que tal!

Estoy realizando un ejemplo de los controles de errores Try y Catch para sql server 2005 con este siguiente ejemplo:


Código:
BEGIN TRY

    DECLARE @divisor int ,

    @dividendo int,

    @resultado int


    SET @dividendo = 100

    SET @divisor = 0

    -- Esta linea provoca un error de division por 0
    SET @resultado = @dividendo/@divisor
    PRINT 'No hay error'
END TRY

BEGIN CATCH
    PRINT 'Se ha producido un error'
END CATCH
Cuando lo ejecutó me tira este siguiente error:

Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'TRY'.
Msg 156, Level 15, State 1, Line 17
Incorrect syntax near the keyword 'END'.

No logró entender que está fallando.

Saludos!!!
  #2 (permalink)  
Antiguo 13/08/2012, 14:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

Código SQL:
Ver original
  1. BEGIN TRY
  2.  
  3.     DECLARE @divisor INT ,
  4.  
  5.     @dividendo INT,
  6.  
  7.     @resultado INT
  8.  
  9.  
  10.     SET @dividendo = 100
  11.  
  12.     SET @divisor = 0
  13.  
  14.     -- Esta linea provoca un error de division por 0
  15.     SET @resultado = @dividendo/@divisor
  16.     PRINT 'No hay error'
  17. END TRY
  18. BEGIN CATCH
  19.     PRINT 'Se ha producido un error'
  20. END CATCH

Ejecute tu codigo y no hay error, tienes que ejecutar todo el bloque :), porque probar nada mas ejecutar el codigo del try sin el catch y me aparece el error que mencionas

Msg 102, Level 15, State 1, Line 18
Incorrect syntax near 'TRY'.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/08/2012, 14:35
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Error en ejemplo de controles de errores Try y Catch

En esta liga, que es de la ayuda en linea, esta un ejemplo de como manejar el error de vision entre 0, checalo

http://msdn.microsoft.com/en-us/libr...ql.105%29.aspx
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 13/08/2012, 14:57
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. BEGIN TRY
  2.  
  3.     DECLARE @divisor INT ,
  4.  
  5.     @dividendo INT,
  6.  
  7.     @resultado INT
  8.  
  9.  
  10.     SET @dividendo = 100
  11.  
  12.     SET @divisor = 0
  13.  
  14.     -- Esta linea provoca un error de division por 0
  15.     SET @resultado = @dividendo/@divisor
  16.     PRINT 'No hay error'
  17. END TRY
  18. BEGIN CATCH
  19.     PRINT 'Se ha producido un error'
  20. END CATCH

Ejecute tu codigo y no hay error, tienes que ejecutar todo el bloque :), porque probar nada mas ejecutar el codigo del try sin el catch y me aparece el error que mencionas

Msg 102, Level 15, State 1, Line 18
Incorrect syntax near 'TRY'.
Claro, lo copié y lo pasteé exactamente como estaba en el ejemplo (todo el código entero) y me sigue tirando esos dos errores =(
  #5 (permalink)  
Antiguo 13/08/2012, 14:57
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por iislas Ver Mensaje
En esta liga, que es de la ayuda en linea, esta un ejemplo de como manejar el error de vision entre 0, checalo

http://msdn.microsoft.com/en-us/libr...ql.105%29.aspx

No entendí mucho esos ejemplos ¿Qué me faltaría poner la instrucción "go"?
  #6 (permalink)  
Antiguo 13/08/2012, 15:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

que diferencia hay entre tu codigo y el que puse???

Código SQL:
Ver original
  1. BEGIN TRY
  2.      
  3.         DECLARE @divisor INT ,
  4.      
  5.         @dividendo INT,
  6.      
  7.         @resultado INT
  8.      
  9.      
  10.         SET @dividendo = 100
  11.      
  12.         SET @divisor = 0
  13.      
  14.         -- Esta linea provoca un error de division por 0
  15.         SET @resultado = @dividendo/@divisor
  16.         PRINT 'No hay error'
  17.     END TRY
  18.     BEGIN CATCH
  19.         PRINT 'Se ha producido un error'
  20.     END CATCH

encuentrala y quizas encuentres una bonita sorpresa :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 13/08/2012, 15:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
que diferencia hay entre tu codigo y el que puse???

Código SQL:
Ver original
  1. BEGIN TRY
  2.      
  3.         DECLARE @divisor INT ,
  4.      
  5.         @dividendo INT,
  6.      
  7.         @resultado INT
  8.      
  9.      
  10.         SET @dividendo = 100
  11.      
  12.         SET @divisor = 0
  13.      
  14.         -- Esta linea provoca un error de division por 0
  15.         SET @resultado = @dividendo/@divisor
  16.         PRINT 'No hay error'
  17.     END TRY
  18.     BEGIN CATCH
  19.         PRINT 'Se ha producido un error'
  20.     END CATCH

encuentrala y quizas encuentres una bonita sorpresa :)

A ver!

mi código:

Código SQL:
Ver original
  1. BEGIN TRY
  2.  
  3.     DECLARE @divisor INT ,
  4.  
  5.     @dividendo INT,
  6.  
  7.     @resultado INT
  8.  
  9.  
  10.     SET @dividendo = 100
  11.  
  12.     SET @divisor = 0
  13.  
  14.     -- Esta linea provoca un error de division por 0
  15.     SET @resultado = @dividendo/@divisor
  16.     PRINT 'No hay error'
  17. END TRY
  18.  
  19. BEGIN CATCH
  20.     PRINT 'Se ha producido un error'
  21. END CATCH

El tuyo:

Código SQL:
Ver original
  1. BEGIN TRY
  2.      
  3.         DECLARE @divisor INT ,
  4.      
  5.         @dividendo INT,
  6.      
  7.         @resultado INT
  8.      
  9.      
  10.         SET @dividendo = 100
  11.      
  12.         SET @divisor = 0
  13.      
  14.         -- Esta linea provoca un error de division por 0
  15.         SET @resultado = @dividendo/@divisor
  16.         PRINT 'No hay error'
  17.     END TRY
  18.     BEGIN CATCH
  19.         PRINT 'Se ha producido un error'
  20.     END CATCH


Son iguales, no noto la diferencia, me siguen tirando error =(
  #8 (permalink)  
Antiguo 13/08/2012, 15:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

Quitale el espacio que hay entre lineas entre el end try y el begin catch :), te dignaste en ejecutar el que te mande? Estas ejecutando todo el bloque?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 13/08/2012, 15:25
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
Quitale el espacio que hay entre lineas entre el end try y el begin catch :), te dignaste en ejecutar el que te mande? Estas ejecutando todo el bloque?
Claro! ni me hizo falta quitar los espacios porque copié y pegué el script que pusiste ejecutando el bloque completo y me tira los mismos errores.

Justamente me bajé el sql server 2005 para poder usar try y catch y demás controles =(
  #10 (permalink)  
Antiguo 13/08/2012, 15:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

a mi el codigo me correo bien, probaste algun ejemplo de los que puso iislas?

http://blog.sqlauthority.com/2007/04...rror-handling/

http://msdn.microsoft.com/en-us/library/ms175976.aspx

y para rematar en español

http://msdn.microsoft.com/es-es/libr...ql.105%29.aspx
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 13/08/2012, 15:35
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
a mi el codigo me correo bien, probaste algun ejemplo de los que puso iislas?

http://blog.sqlauthority.com/2007/04...rror-handling/

http://msdn.microsoft.com/en-us/library/ms175976.aspx

y para rematar en español

http://msdn.microsoft.com/es-es/libr...ql.105%29.aspx


Probé el primero:

Código SQL:
Ver original
  1. BEGIN TRY
  2.     SELECT *
  3.         FROM sys.messages
  4.         WHERE message_id = 21;
  5. END TRY
  6. GO
  7. -- The previous GO breaks the script into two batches,
  8. -- generating syntax errors. The script runs if this GO
  9. -- is removed.
  10. BEGIN CATCH
  11.     SELECT ERROR_NUMBER() AS ErrorNumber;
  12. END CATCH;
  13. GO


Me tiró lo siguiente:

Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'TRY'.
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'END'.
Msg 170, Level 15, State 1, Line 4
Line 4: Incorrect syntax near 'CATCH'.
Msg 195, Level 15, State 10, Line 5
'ERROR_NUMBER' is not a recognized function name.



¿Estos controles funcionan en sql server 2005? Porque la guía esta dice "sql server 2008"...
  #12 (permalink)  
Antiguo 13/08/2012, 15:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

no sabes leer en ingles??

-- The previous GO breaks the script into two batches,
-- generating syntax errors. The script runs if this GO
-- is removed.

Traduccion:
El Go previo rompe el script en 2 batch generando sintaxis de error, el script funciona si el go es removido

Ese GO no va lo quitamos y funciona :)

Estoy probando en sql server 2005, tengo procesos con try and catch en sql server 2005......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 13/08/2012, 15:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
no sabes leer en ingles??

-- The previous GO breaks the script into two batches,
-- generating syntax errors. The script runs if this GO
-- is removed.

Traduccion:
El Go previo rompe el script en 2 batch generando sintaxis de error, el script funciona si el go es removido

Ese GO no va lo quitamos y funciona :)

Estoy probando en sql server 2005, tengo procesos con try and catch en sql server 2005......
Sí, claro! lo probé sin los Go. Este es mi script:


Código SQL:
Ver original
  1. BEGIN TRY
  2.     SELECT *
  3.         FROM Articulos
  4.         WHERE Cod_Arti = 21;
  5. END TRY
  6. BEGIN CATCH
  7.     SELECT ERROR_NUMBER() AS ErrorNumber;
  8. END CATCH

Resultado:

Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'TRY'.
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'END'.
Msg 195, Level 15, State 10, Line 7
'ERROR_NUMBER' is not a recognized function name.


Muy raro.
  #14 (permalink)  
Antiguo 13/08/2012, 15:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

que version de sql server tienes?

ejecuta esto y dinos el resultado

Select @@version
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 13/08/2012, 16:05
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
que version de sql server tienes?

ejecuta esto y dinos el resultado

Select @@version
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

Con razón! Pero en help/about dice Microsoft sql server 2005
  #16 (permalink)  
Antiguo 13/08/2012, 16:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

Ahi claramente dices que tienes un sql server 2000 :) ahi el porque no jala el try and catch :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #17 (permalink)  
Antiguo 13/08/2012, 16:14
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
Ahi claramente dices que tienes un sql server 2000 :) ahi el porque no jala el try and catch :)
Una pregunta, tuve que descargarme el sql sever 2000 anteriormente para crearme un servidor con el service manager del sql server 2000 porque con el sql server 2005, ya que no traía el service manager, no supe como crearme un servidor. ¿Tendrá que ver esto que no me deje usar el try y el catch en el sql server 2005 por estar usando un server del 2000?
  #18 (permalink)  
Antiguo 13/08/2012, 16:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

Estas usando el manager del 2005 pero tienes un server 2000(funciones y demas cosas fueron creadas para 2000) he ahi el error.....por ejemplo tengo varios servidores de sql server 2005 si instalo el 2008 y me conecto a estos servers no me va a dejar usar las funciones unicas de 2008 aunque use el manager de 2008, se entiende??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #19 (permalink)  
Antiguo 13/08/2012, 16:19
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por Libras Ver Mensaje
Estas usando el manager del 2005 pero tienes un server 2000(funciones y demas cosas fueron creadas para 2000) he ahi el error.....por ejemplo tengo varios servidores de sql server 2005 si instalo el 2008 y me conecto a estos servers no me va a dejar usar las funciones unicas de 2008 aunque use el manager de 2008, se entiende??
¿Hay algún tutorial en el foro que me diga como se crea un servidor con el sql server 2005 para no molestar y no abrir otro thread o puedo seguir molestando abriendo otro thread?

  #20 (permalink)  
Antiguo 13/08/2012, 16:20
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

no se en el foro pero en internet hay muchisima informacion, asi que a buscarle y leer un poco mi amig@
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #21 (permalink)  
Antiguo 13/08/2012, 16:44
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Error en ejemplo de controles de errores Try y Catch

Este store, enviara el mensaje indicado por la division entre cero

Código SQL:
Ver original
  1. CREATE PROCEDURE usp_GetErrorInfo
  2. AS
  3.     SELECT
  4.         ERROR_NUMBER() AS ErrorNumber,
  5.         ERROR_SEVERITY() AS ErrorSeverity,
  6.         ERROR_STATE() AS ErrorState,
  7.         ERROR_PROCEDURE() AS ErrorProcedure,
  8.         ERROR_LINE() AS ErrorLine,
  9.         ERROR_MESSAGE() AS ErrorMessage;

En esta parte se prueba (test) de la ejecucion de dicho store:

Código SQL:
Ver original
  1. BEGIN TRY
  2.     -- Generate divide-by-zero error.
  3.     SELECT 1/0;
  4. END TRY
  5. BEGIN CATCH
  6.     -- Execute the error retrieval routine.
  7.     EXECUTE usp_GetErrorInfo;
  8. END CATCH;
__________________
MCTS Isaias Islas
  #22 (permalink)  
Antiguo 13/08/2012, 16:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Error en ejemplo de controles de errores Try y Catch

NO ME LO DIGAN, EN SERIO !!!!!!!!

Por eso mi insistencia de preguntar el NIVEL DE COMPATIBILIDAD, si desde un inicio nos dice 80, le decimos que BEGIN TRY no fue diseñado para esa version.

En fin, esto se llama PERDER EL TIEMPO
__________________
MCTS Isaias Islas
  #23 (permalink)  
Antiguo 13/08/2012, 16:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Error en ejemplo de controles de errores Try y Catch

Cita:
Iniciado por iislas Ver Mensaje
NO ME LO DIGAN, EN SERIO !!!!!!!!

Por eso mi insistencia de preguntar el NIVEL DE COMPATIBILIDAD, si desde un inicio nos dice 80, le decimos que BEGIN TRY no fue diseñado para esa version.

En fin, esto se llama PERDER EL TIEMPO
Tiene mucha razon mi estimado
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: catch, controles, ejemplo, errores, server, sql
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 12:18.