ERROR_SEVERITY (Transact-SQL)

Devuelve la gravedad del error que provocó la ejecución del bloque CATCH de una construcción TRY…CATCH.

Icono de vínculo a temasConvenciones 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 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

El siguiente ejemplo muestra una instrucción SELECT que genera un error de división por cero. Se devuelve la gravedad del error.

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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