ERROR_SEVERITY (Transact-SQL)
Devuelve la gravedad del error que provocó la ejecución del bloque CATCH de una construcción TRY…CATCH.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ERROR_SEVERITY ( )
Tipos de valor devueltos
int
Valor devuelto
Cuando se llama en un bloque CATCH, devuelve la gravedad del mensaje de error que provocó la ejecución del bloque CATCH.
Devuelve NULL si se llama fuera del ámbito de un bloque CATCH.
Comentarios
ERROR_SEVERITY se puede llamar desde cualquier lugar dentro del ámbito de un bloque CATCH.
ERROR_SEVERITY devuelve la gravedad del error independientemente de cuántas veces se ejecute o de si se ejecuta dentro del ámbito del bloque CATCH. En cambio, las funciones como @@ERROR solo devuelven el número de error en la instrucción inmediatamente posterior a la que produjo el error o en la primera instrucción de un bloque CATCH.
En los bloques CATCH anidados, ERROR_SEVERITY devuelve la gravedad del error específica del ámbito del bloque CATCH en el que se hace referencia al mismo. Por ejemplo, el bloque CATCH de una construcción TRY...CATCH externa podría tener una construcción TRY...CATCH anidada. Dentro del bloque CATCH anidado, ERROR_SEVERITY devuelve la gravedad del error que invocó el bloque CATCH anidado. Si ERROR_SEVERITY se ejecuta en el bloque CATCH externo, devuelve la gravedad del error que invocó ese bloque CATCH.
Ejemplos
A.Utilizar ERROR_SEVERITY en un bloque CATCH
El siguiente ejemplo muestra una instrucción SELECT que genera un error de división por cero. Se devuelve la gravedad del error.
USE AdventureWorks2012;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_SEVERITY() AS ErrorSeverity;
END CATCH;
GO
B.Utilizar ERROR_SEVERITY en un bloque CATCH con otras herramientas de control de errores
El siguiente ejemplo muestra una instrucción SELECT que genera un error de división por cero. Además de la gravedad, se devuelve otra información relacionada con el error.
USE AdventureWorks2012;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO