FORMATMESSAGE (Transact-SQL)
Construit un message à partir d'un message existant dans sys.messages. La fonctionnalité de FORMATMESSAGE ressemble à celle de l'instruction RAISERROR. Cependant, RAISERROR imprime immédiatement le message, tandis que FORMATMESSAGE retourne le message mis en forme pour un traitement ultérieur.
Conventions de la syntaxe Transact-SQL
Syntaxe
FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )
Arguments
msg_number
ID du message stocké dans sys.messages. Si msg_number est <= 13 000, ou que le message n'existe pas dans sys.messages, NULL est retourné.param_value
Valeur de paramètre à utiliser dans le message. Vous pouvez utiliser plusieurs valeurs de paramètre. Les valeurs doivent être spécifiées dans l'ordre selon lequel les variables d'espace réservé apparaissent dans le message. Le nombre maximal des valeurs est 20.
Types de retour
nvarchar
Notes
Comme l'instruction RAISERROR, FORMATMESSAGE modifie le message en substituant les valeurs de paramètre fournies par des variables d'espace réservé dans le message. Pour plus d'informations concernant les espaces réservés autorisés dans les messages d'erreur et le processus de modification, consultez RAISERROR (Transact-SQL).
FORMATMESSAGE recherche le message dans le langage courant de l'utilisateur. S'il n'existe pas de version localisée du message, la version américaine (U.S. English) est utilisée.
Pour les messages localisés, les valeurs de paramètres fournies doivent correspondre aux espaces réservés des paramètres de la version américaine. Ainsi, le paramètre 1 dans la version localisée doit correspondre au paramètre 1 dans la version américaine (U.S. English), le paramètre 2 doit correspondre au paramètre 2 de cette dernière, et ainsi de suite.
Exemples
L'exemple suivant utilise un message de réplication 20009 stocké dans sys.messages pour "L'article « %s » ne peut pas être ajouté à la publication « %s ». FORMATMESSAGE substitue les valeurs First Variable et Second Variable aux espaces réservés du paramètre. La chaîne finale résultante,"L'article « la première variable » ne peut pas être ajouté à la publication « la deuxième variable ».", est stockée dans la variable locale @var1.
SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1036;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;