ERROR_MESSAGE (Transact-SQL)

Devuelve el texto del mensaje del error que ha provocado la ejecución del bloque CATCH de una construcción TRY…CATCH.

Sintaxis

ERROR_MESSAGE()

Tipos de valor devueltos

nvarchar(2048)

Valor devuelto

Cuando se ha llamado en un bloque CATCH, devuelve el texto completo del mensaje de error que ha provocado la ejecución del bloque CATCH. El texto incluye los valores proporcionados para los parámetros sustituibles, como las longitudes, nombres de objeto o tiempos.

Devuelve NULL si se le llama desde fuera del ámbito del bloque CATCH.

Notas

Puede llamarse a ERROR_MESSAGE desde cualquier lugar del ámbito de un bloque CATCH.

ERROR_MESSAGE devuelve el mensaje de error con independencia de cuántas veces se haya ejecutado, o en qué parte del ámbito del bloque CATCH se ejecute. Esto contrasta con funciones como @@ERROR, que sólo devuelve un número de error en la instrucción inmediatamente posterior a la que causa un error, o la primera instrucción de un bloque CATCH.

En bloques CATCH anidados, ERROR_MESSAGE devuelve el mensaje de error específico del ámbito del bloque CATCH en el que se hace referencia a él. Por ejemplo, el bloque CATCH de una construcción TRY...CATCH externa podría tener una construcción TRY...CATCH anidada. En el bloque CATCH anidado, ERROR_MESSAGE devuelve el mensaje del error que ha invocado el bloque CATCH anidado. Si se ejecuta ERROR_MESSAGE en el bloque CATCH externo, devuelve el mensaje del error que ha invocado el bloque CATCH.

Ejemplos

A. Usar ERROR_MESSAGE en un bloque CATCH

El siguiente ejemplo de código muestra una instrucción SELECT que genera un error de división por cero. Se devuelve el mensaje de error.

USE AdventureWorks;
GO

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

B. Usar ERROR_MESSAGE en un bloque CATCH con otras herramientas de control de errores.

El siguiente ejemplo de código muestra una instrucción SELECT que genera un error de división por cero. Además del mensaje de error, se devuelve 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_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)

Otros recursos

Recuperar información de errores en Transact-SQL
Usar TRY...CATCH en Transact-SQL
Usar RAISERROR
Niveles de gravedad de error del motor de base de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005