Compartir a través de


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

Ayuda e información

Obtener ayuda sobre SQL Server 2005