ERROR_SEVERITY (Transact-SQL)
Devuelve la gravedad del error que provocó la ejecución del bloque CATCH de una construcción TRY…CATCH.
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.
Notas
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 sólo 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
En el siguiente ejemplo de código se muestra una instrucción SELECT que genera un error de división por cero. Se devuelve la gravedad del error.
USE AdventureWorks;
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
En el siguiente ejemplo de código se 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 AdventureWorks;
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
Vea también
Referencia
sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Otros recursos
Recuperar información de errores en Transact-SQL
Niveles de gravedad de error del motor de base de datos
Usar TRY...CATCH en Transact-SQL
Usar RAISERROR
Usar @@ERROR