Funciones para control de Errores

Funciones para el manejo de errores

Las funciones para el manejo de errores permiten conocer los parámetros que reporta un error, las funciones son las siguientes:

 

Función Descripción
ERROR_NUMBER() Devuelve el número de error.
ERROR_SEVERITY() Devuelve la severidad del error.
ERROR_STATE() Devuelve el estado del error.
ERROR_PROCEDURE() Devuelve el nombre del procedimiento almacenado que ha provocado el error.
ERROR_LINE() Devuelve el número de línea en el que se ha producido el error.
ERROR_MESSAGE() Devuelve el mensaje de error.

 

Ejemplo
El siguiente ejemplo muestra una división entre CERO, lo que arroja error, luego se muestran los valores de cada función. Se utiliza la estructura Try Catch cuya explicación está al final de este artículo.

BEGIN TRY
DECLARE @Valor1 Numeric(9,2),@Valor2 Numeric(9,2), @Division Numeric(9,2)
SET @Valor1 = 100
SET @Valor2 = 0
SET @Division = @Valor1/@Valor2
PRINT ‘La división no reporta error’
END TRY
BEGIN CATCH
select ERROR_NUMBER() As ‘Nº de Error’, ERROR_SEVERITY() As ‘Severidad’,
ERROR_STATE() As ‘Estado’, ERROR_PROCEDURE() As ‘Procedimiento’, ERROR_LINE() As ‘Nº línea’,
ERROR_MESSAGE() As ‘Mensaje’
END CATCH



La Función @@ERROR

La función @@ERROR almacena el número de error producido por la última sentencia Transact SQL ejecutada, si no se ha producido ningún error el valor de la función es CERO.
Se puede usar esta función para controlar los errores usando una estructura If

Ejemplo:
El siguiente ejemplo muestra una división entre CERO, lo que arroja error, luego se da consistencia al error con una estructura If

DECLARE @Valor1 Numeric(9,2),@Valor2 Numeric(9,2), @Division Numeric(9,2)
SET @Valor1 = 100
SET @Valor2 = 0
SET @Division = @Valor1/@Valor2
If @@ERROR = 0
Begin
Print ‘El resultado es: ‘ + Str(@Division)
Print ‘No hubo error’
End
Else
Begin
Print ‘Error al dividir entre CERO’
End
go

Probamos el mismo código con el Valor2 igual a 2

DECLARE @Valor1 Numeric(9,2),@Valor2 Numeric(9,2), @Division Numeric(9,2)
SET @Valor1 = 100
SET @Valor2 = 2
SET @Division = @Valor1/@Valor2
If @@ERROR = 0
Begin
Print ‘El resultado es: ‘ + Str(@Division)
Print ‘No hubo error’
End
Else
Begin
Print ‘Error al dividir entre CERO’
End
go