Intente atrapar bloques en SQL Server

Intente atrapar bloques en SQL Server
No importa cuán perfecto se intente ser su código, siempre hay una posibilidad de errores. Por lo tanto, es mejor implementar medidas de manejo de errores para atrapar y tratar errores antes de que rompan la funcionalidad de sus aplicaciones.

En esta guía, aprenderá cómo implementar el manejo de errores en SQL Server utilizando los bloques de prueba y captura.

Si está buscando aprender cómo generar mensajes de error definidos por el usuario, consulte nuestro tutorial en el tutorial de SQL Server RaisError.

Introducción

El intento de atrapar bloques en el servidor SQL le permite predecir y manejar graciosamente los errores que pueden ocurrir en las consultas SQL.

Primero, adjunte las consultas SQL que pueden causar errores dentro de un bloque de try. Luego puede agregar un bloque de captura una vez que se plantea una excepción.

La sintaxis para un bloque de try es como se muestra:

empezar a intentar
-- Intenta ejecutar estas declaraciones
fin de prueba;

Después del bloque de prueba, puede establecer un bloque de captura que sigue sintaxis similar como se muestra:

comenzar a atrapar
-- atrapar declaraciones
captura final

Primero, el servidor SQL intentará ejecutar el código dentro del bloque de prueba. Si no se produce error/excepción, omita el bloque de captura y continúa con la ejecución.

Sin embargo, si se produce un error dentro del bloque de try, la ejecución salta dentro de la captura y ejecuta el código dentro de ese bloque.

La sintaxis para un bloque de try/captura completo es como se muestra:

empezar a intentar
-- Intenta correr conmigo
endry
comenzar a atrapar
-- corre meiferrorintry
EndCatch;

Puede implementar medidas para manejar el error elevado dentro del bloque de captura, como mostrar mensajes usando RaisError e imprimir declaraciones. Recuerde, el mensaje de error dentro del bloque de captura no se devuelve a la aplicación a menos que se use mecanismos, como una instrucción SELECT.

Puede usar funciones especiales para obtener información detallada sobre el error:

  1. Error_number () - Devuelve un ID de mensaje interno para el error.
  2. Error_severity (): muestra el nivel de gravedad del error. Un valor entre 0 y 25 con mayor gravedad indica un alto nivel de gravedad. Tenga en cuenta que un valor de gravedad de 20 a 25 es fatal.
  3. Error_state - estado del mensaje de error. Un valor entre 0 a 255.
  4. Error_message: un mensaje descriptivo del error que ha ocurrido.
  5. Error_procedure (): muestra el nombre de la función, el procedimiento activado o almacenado donde se planteó el error.

Asegúrese de usar las funciones anteriores dentro de un bloque de captura; De lo contrario, devolverán un valor nulo.

SQL Server TRY/Catch Ejemplos

Usemos un error de división por cero para ilustrar cómo usar el bloque de try/captación. Comience creando un procedimiento como se muestra en las siguientes consultas:

-- Obtener información de error
CreateProcedureget_errorinfo
como
selectterror_number () aserrornumber,
Error_severity () Asseverity,
Error_state () aserRorState,
Error_procedure () aserrorProcedure,
Error_message () aserrRormessage,
Error_line () aserrorline
becario
-- dividebyzeroerror
seleccione 1/0;
endry
comenzar a atrapar
-- Ejecutar procedimientoGetErrorinfo
execget_errorinfo;
captura final;

En el ejemplo anterior, creamos un procedimiento almacenado para recuperar información sobre un error. Entonces, planteamos un error buceando por cero.

Si ejecutamos la consulta anterior, debemos obtener una salida como:

¿Qué sucede si no hay error en el bloque de captura como se muestra?

becario
-- No hay error
seleccionar100/5AsResult;
endry
comenzar a atrapar
-- Ejecutar procedimientoGetErrorinfo
execget_errorinfo;
EndCatch;

Dado que no hay error en el bloque de prueba, el servidor SQL omite los bloques de captura y devuelve el resultado. Un resultado de ejemplo es como se muestra:

Conclusión

Esta guía cubrió la implementación y el uso del manejo de errores en el servidor SQL utilizando los bloques de prueba/captura. Además, se explicaron y se proporcionaron funciones especiales para recuperar información detallada sobre el error. Esperamos que hayas encontrado este artículo útil. Consulte más artículos de Linux Sugerencia para obtener consejos e información sobre servidores SQL.