FORMATMESSAGE (Transact-SQL)

Genera un mensaje a partir de un mensaje existente en sys.messages.La funcionalidad de FORMATMESSAGE es similar a la de la instrucción RAISERROR. Sin embargo, RAISERROR imprime el mensaje inmediatamente, mientras que FORMATMESSAGE devuelve el mensaje formateado para que se pueda seguir procesando.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )

Argumentos

  • msg_number
    Es el identificador del mensaje almacenado en sys.messages. Si msg_number es <= 13000 o si el mensaje no existe en sys.messages, se devuelve NULL.

  • param_value
    Es un valor de parámetro que se utiliza en el mensaje. Puede ser más de un valor. Los valores se deben especificar en el orden en el que las variables de marcador de posición aparezcan en el mensaje. El número máximo de valores es 20.

Tipos de valor devueltos

nvarchar

Notas

Al igual que la instrucción RAISERROR, FORMATMESSAGE modifica el mensaje sustituyendo los valores de los parámetros suministrados por variables de marcador de posición del mensaje. Para obtener más información sobre los marcadores de posición permitidos en los mensajes de error y el proceso de edición, vea RAISERROR (Transact-SQL).

[!NOTA]

FORMATMESSAGE sólo funciona con mensajes creados con sp_addmessage.

FORMATMESSAGE busca el mensaje en el idioma actual del usuario. Si no hay una versión del mensaje en otro idioma, se utiliza la versión en inglés (EE.UU.).

En los mensajes en otros idiomas, los valores de los parámetros suministrados deben corresponder a los marcadores de posición de los parámetros de la versión en inglés (EE.UU.). Es decir, el parámetro 1 de la versión en otros idiomas debe corresponder al parámetro 1 de la versión en inglés (EE.UU.), el parámetro 2 debe corresponder al parámetro 2, etc.

Ejemplos

Este ejemplo utiliza un supuesto mensaje 50001, almacenado en sys.messages como "El número de filas en %s es %1d." FORMATMESSAGE sustituye los valores Table1 y 5 por los marcadores de posición de los parámetros. La cadena resultante, "El número de filas en Table1 es 5" se almacena en la variable local @var1.

DECLARE @var1 VARCHAR(100)
SELECT @var1 = FORMATMESSAGE(50001, 'Table1', 5)