FORMATMESSAGE (Transact-SQL)
Erstellt eine Meldung aus einer vorhandenen Meldung in sys.messages. Die Funktionalität von FORMATMESSAGE ähnelt der RAISERROR-Anweisung. RAISERROR gibt die Meldung jedoch direkt aus, während FORMATMESSAGE die bearbeitete Meldung zur weiteren Verarbeitung zurückgibt.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )
Argumente
msg_number
Die ID der in sys.messages gespeicherten Nachricht. Falls msg_number < = 13000 ist oder falls die Meldung in sys.messages nicht vorhanden ist, wird NULL zurückgegeben.param_value
Ein Parameterwert, der in der Meldung verwendet wird. Hierbei kann es sich um mehrere Parameterwerte handeln. Die Werte müssen in der Reihenfolge angegeben werden, in der die Platzhaltervariablen in der Meldung vorkommen. Es können maximal 20 Werte angegeben werden.
Rückgabetypen
nvarchar
Hinweise
Wie bei der RAISERROR-Anweisung ersetzt FORMATMESSAGE die Platzhaltervariablen in der Meldung mit den angegebenen Parameterwerten. Weitere Informationen zu zulässigen Platzhaltern in Fehlermeldungen und zum Bearbeitungsprozess finden Sie unter RAISERROR (Transact-SQL).
FORMATMESSAGE sucht die Meldung in der aktuellen Sprache des Benutzers. Wenn es keine lokalisierte Version der Meldung gibt, wird die Version für Englisch (USA) verwendet.
Für lokalisierte Meldungen müssen die angegebenen Parameterwerte den Parameterplatzhaltern in der Version für Englisch (USA) entsprechen. Das heißt, Parameter 1 in der lokalisierten Version muss Parameter 1 in der Version für Englisch (USA) entsprechen, Parameter 2 in der lokalisierten Version muss Parameter 2 in der Version für Englisch (USA) entsprechen usw.
Beispiele
Im folgenden Beispiel wird eine Replikationsmeldung mit dem Code 20009 verwendet, die mit folgendem Wortlaut in sys.messages gespeichert ist: "Der '%s'-Artikel konnte nicht zur '%s'-Veröffentlichung hinzugefügt werden." In der FORMATMESSAGE-Anweisung werden für die Parameterplatzhalter die Werte First Variable und Second Variable eingesetzt. Die Ergebniszeichenfolge "Der 'First Variable'-Artikel konnte nicht zur 'Second Variable'-Veröffentlichung hinzugefügt werden" wird in der lokalen Variablen @var1 gespeichert.
SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1031;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;