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.
Convenciones de sintaxis de Transact-SQL
Sintaxis
FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )
Argumentos
msg_number
Identificador de mensaje almacenado en sys.messages. Si msg_number es <= 13000, o si el mensaje no existe en sys.messages, se devuelve NULL.param_value
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
Comentarios
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).
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
En el ejemplo siguiente se usa un mensaje de replicación 20009 almacenado en sys.messages como "No se pudo agregar el artículo '%s' a la publicación '%s'.". FORMATMESSAGE sustituye los valores First Variable y Second Variable por los marcadores de posición de los parámetros. La cadena resultante, "No se pudo agregar el artículo 'First Variable' a la publicación 'Second Variable'., se almacena en la variable local @var1.
SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 3082;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;