ERROR_SEVERITY (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database SíInstancia administrada de Azure SQL síAzure Synapse Analytics síAlmacenamiento de datos paralelos

Esta función devuelve el valor de gravedad del error cuando se produce un error, si provoca la ejecución del bloque CATCH de una construcción TRY…CATCH.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

Sintaxis

ERROR_SEVERITY ( )  

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.

Tipos de valor devuelto

int

Valor devuelto

Cuando se llama en un bloque CATCH donde se produce un error, ERROR_SEVERITY devuelve la gravedad del error que provocó la ejecución del bloque CATCH.

ERROR_SEVERITY NULL si se llamó desde fuera del ámbito de un bloque CATCH.

Observaciones

ERROR_SEVERITY admite llamadas en cualquier lugar del ámbito de un bloque CATCH.

ERROR_SEVERITY devuelve el valor de gravedad de un error, con independencia de cuántas veces se ejecute o de dónde se ejecute dentro del ámbito del bloque CATCH. Esto contrasta con funciones como @@ERROR, que solo devuelve un número de error en la instrucción inmediatamente posterior a la que produjo el error.

ERROR_SEVERITY normalmente funciona en un bloque CATCH anidado. ERROR_SEVERITY devuelve el valor de gravedad del error específico del ámbito del bloque CATCH al que hace referencia ese bloque CATCH. Por ejemplo, el bloque CATCH de una construcción TRY...CATCH externa podría tener una construcción TRY...CATCH interna. Dentro de ese bloque interno CATCH, ERROR_SEVERITY devuelve el valor de gravedad del error que invocó el bloque CATCH interno. Si ERROR_SEVERITY se ejecuta en el bloque CATCH externo, devuelve el valor de gravedad del error que invocó ese bloque CATCH externo.

Ejemplos: Azure Synapse Analytics y Almacenamiento de datos paralelos

A. Utilizar ERROR_SEVERITY en un bloque CATCH

En este ejemplo se muestra un procedimiento almacenado que genera un error de división por cero. ERROR_SEVERITY devuelve el valor de gravedad de ese error.

BEGIN TRY  
    -- Generate a divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT ERROR_SEVERITY() AS ErrorSeverity;  
END CATCH;  
GO  

El conjunto de resultados es el siguiente:

-----------

(0 row(s) affected)

ErrorSeverity
-------------
16

(1 row(s) affected)

B. Utilizar ERROR_SEVERITY en un bloque CATCH con otras herramientas de control de errores

En este ejemplo se muestra una instrucción SELECT que genera un error de división por cero. El procedimiento almacenado devuelve información sobre el error.

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  

El conjunto de resultados es el siguiente:

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure  ErrorLine   ErrorMessage
----------- ------------- ----------- --------------- ----------- ----------------------------------
8134        16            1           NULL            4           Divide by zero error encountered.

(1 row(s) affected)

Consulte también

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)
Referencia de errores y eventos (Motor de base de datos)