FORMATMESSAGE (Transact-SQL)
Constrói uma mensagem a partir de uma mensagem existente em sys.messages. A funcionalidade de FORMATMESSAGE se assemelha à da instrução RAISERROR. Entretanto, RAISERROR imprime a mensagem imediatamente, enquanto FORMATMESSAGE retorna a mensagem formatada para processamento posterior.
Convenções da sintaxe Transact-SQL
Sintaxe
FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )
Argumentos
msg_number
A ID da mensagem está armazenada no sys.messages. Se msg_number is <= 13000 ou se a mensagem não existir em sys.messages, será retornado NULL.param_value
É um valor de parâmetro para uso na mensagem. Pode ser mais de um valor de parâmetro. Os valores devem ser especificados na ordem em que as variáveis de espaço reservado aparecem na mensagem. O número máximo de valores é 20.
Tipos de retorno
nvarchar
Comentários
Da mesma forma que a instrução RAISERROR, FORMATMESSAGE edita a mensagem substituindo os valores de parâmetros fornecidos nas variáveis de espaço reservado da mensagem. Para obter mais informações sobre os espaços reservados permitidos em mensagens de erro e o processo de edição, consulte RAISERROR (Transact-SQL).
FORMATMESSAGE pesquisa a mensagem no idioma atual do usuário. Se não houver nenhuma versão localizada da mensagem, a versão em inglês dos EUA será usada.
Para mensagens localizadas, os valores dos parâmetros fornecidos devem corresponder aos espaços reservados dos parâmetros na versão em inglês dos EUA. Isto é, o parâmetro 1 na versão localizada deve corresponder ao parâmetro 1 na versão em inglês dos EUA, o parâmetro 2 deve corresponder ao parâmetro 2 e assim por diante.
Exemplos
O exemplo a seguir usa uma mensagem de replicação 20009 armazenada em sys.messages como "Não foi possível adicionar o artigo '%s' à publicação '%s'. FORMATMESSAGE substitui os valores First Variable e Second Variable para os espaços reservados de parâmetro. A cadeia de caracteres resultante, "Não foi possível adicionar o artigo 'First Variable' à publicação 'Second Variable'., é armazenado na variável local @var1.
SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1042;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;