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.
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).
[!REMARQUE]
FORMATMESSAGE fonctionne uniquement avec des messages créés à l'aide de sp_addmessage.
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.
Exemple
Cet exemple utilise le message hypothétique 50 001, stocké dans sys.messages sous la forme d'une chaîne telle que « Le nombre de lignes dans %s est %1d. » FORMATMESSAGE substitue les valeurs Table1 et 5 aux espaces réservés du paramètre. La chaîne finale résultante, « Le nombre de lignes dans Table1 est 5. » est stockée dans la variable locale @var1.
DECLARE @var1 VARCHAR(100)
SELECT @var1 = FORMATMESSAGE(50001, 'Table1', 5)
Voir aussi