Try catch en SQL Server
SQL Server permite implementar bloques de control de errores Try catch, muy conocidos por ser utilizados en lenguajes de programación como c#.
Try catch controlan los errores generados en las consultas, procedimientos almacenados, funciones, etc. al ser ejecutadas.
Estructura Try catch
La estructura del bloque try catch es similar en los lenguajes como C#, veamos como es.
BEGIN TRY
--Instrucciones
END TRY
BEGIN CATCH
--Captura de errores
END CATCH
El bloque inicia con Begin try, posteriormente las instrucciones a ejecutar y cerramos el bloque con End try.
Inmediatamente al cerrar el try debemos de abrir el bloque catch, dentro de este colocamos las instrucciones de manejo de errores, por último, cerramos el catch.
Usar try catch en SQL
Creamos una consulta para utilizar Try catch, intencionalmente provocaremos un error para visualizar el mensaje de error.
BEGIN TRY
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT 'ERROR DE OPERACION: '+ERROR_MESSAGE();
END CATCH
- Mediante una división con 0 provocamos un error aritmético.
- El error se captura en el catch, se muestra como una consulta.
- ERROR_MESSAGE captura el mensaje del error, se concatena a la consulta para visualizarlo.
Al ejecutar esta consulta en SQL server podrás obtener el resultado siguiente.
Puedes notar el mensaje de error y que es en la operación aritmética (un valor superior a 0 no es divisible entre 0).
Podría interesarte Condicionante IF ELSE en SQL Server
La manera de cómo manejar los errores ya es de acuerdo con el aplicativo, si se almacena o no se hace nada.
No todos los errores son capturados, los errores que detienen la base de datos generan que la consulta termine.
Para este tipo de errores es obligatorio corregir la consulta, por ejemplo, al insertar un registro sin todas las columnas obligatorias.
El mensaje anterior detiene la ejecución de la consulta, no es marcado como error, pero al ejecutar aparece.
y como lo utilizo con mi tabla, por ejemplo para que no añadan 0 o un dato falso o tonto. O para eso no sirve?
Esta función no te ayudara en ese requerimiento; para eso puedes utilizar otros filtros desde un sp, desde el código del servidor o desde el cliente.