ERROR_MESSAGE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
Esta función devuelve el texto del mensaje del error que ha provocado la ejecución del bloque CATCH de una construcción TRY…CATCH.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ERROR_MESSAGE ( )
Tipos de valor devuelto
nvarchar(4000)
Valor devuelto
Cuando se llama en un bloque CATCH, ERROR_MESSAGE
devuelve el texto completo del mensaje de error que ha provocado la ejecución del bloque CATCH
. En el texto se incluyen los valores proporcionados para los parámetros sustituibles, como las longitudes, los nombres de objeto o las horas.
ERROR_MESSAGE
devuelve NULL si se llama desde fuera del ámbito de un bloque CATCH.
Observaciones
ERROR_MESSAGE
admite llamadas en cualquier lugar del ámbito de un bloque CATCH.
ERROR_MESSAGE
devuelve un mensaje de error relevante, 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.
En los bloques CATCH
anidados, ERROR_MESSAGE
devuelve el mensaje de 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_MESSAGE
devuelve el mensaje de error que invocó el bloque CATCH
interno. Si ERROR_MESSAGE
se ejecuta en el bloque CATCH
externo, devuelve el mensaje de error que invocó ese bloque CATCH
externo.
Ejemplos
A. Usar ERROR_MESSAGE en un bloque CATCH
En este ejemplo se muestra una instrucción SELECT
que genera un error de división por cero. El bloque CATCH
devuelve el mensaje de error.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Este es el conjunto de resultados.
-----------
(0 row(s) affected)
ErrorMessage
----------------------------------
Divide by zero error encountered.
(1 row(s) affected)
B. Usar ERROR_MESSAGE 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. Junto con el mensaje de error, el bloque CATCH
devuelve información sobre ese 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
Este es el conjunto de resultados.
-----------
(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_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Referencia de errores y eventos del motor de base de datos