Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Konstruerar ett meddelande från ett befintligt meddelande i sys.messages eller från en tillhandahållen sträng. Funktionaliteten i FORMATMESSAGE liknar RAISERROR-satsen. RAISERROR skriver dock ut meddelandet omedelbart, medan FORMATMESSAGE returnerar det formaterade meddelandet för vidare bearbetning.
Transact-SQL syntaxkonventioner
Syntax
FORMATMESSAGE ( { msg_number | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )
Arguments
msg_number
Är meddelandets ID lagrat i sys.messages. Om msg_number är <= 13000, eller om meddelandet inte finns i sys.messages, returneras NULL.
msg_string
Gäller för: SQL Server (SQL Server 2016 (13.x) till nuvarande version).
Är en sträng innesluten i enkla citattecken och innehåller platshållare för parametervärden. Felmeddelandet kan ha maximalt 2 047 tecken. Om meddelandet innehåller 2 048 eller fler tecken visas endast de första 2 044 och en ellips läggs till för att indikera att meddelandet har trunkerats. Observera att substitutionsparametrar förbrukar fler tecken än vad utdata visar på grund av internt lagringsbeteende. För information om strukturen hos en meddelandesträng och användningen av parametrar i strängen, se beskrivningen av msg_str argumentet i RAISERROR (Transact-SQL).
@msg_variable
Gäller för: SQL Server (SQL Server 2016 (13.x) till nuvarande version).
Är en nvarchar- eller varchar-variabel som innehåller en sträng som uppfyller kriterierna för msg_string ovan.
param_value
Är ett parametervärde för användning i meddelandet. Kan vara mer än ett parametervärde. Värdena måste specificeras i den ordning som platshållarvariablerna förekommer i meddelandet. Det maximala antalet värden är 20.
Returtyper
nvarchar
Anmärkningar
Liksom RAISERROR-satsen redigerar FORMATMESSAGE meddelandet genom att ersätta platshållarvariabler med de tillhandahållna parametervärdena i meddelandet. För mer information om vilka platshållare som tillåts i felmeddelanden och redigeringsprocessen, se RAISERROR (Transact-SQL).
FORMATMESSAGE slår upp meddelandet på användarens aktuella språk. För systemmeddelanden (msg_number<=50000), om det inte finns någon lokaliserad version av meddelandet, används OS-språkversionen. För användarmeddelanden (msg_number>50000), om det inte finns någon lokaliserad version av meddelandet, används den engelska versionen.
För lokaliserade meddelanden måste de tillhandahållna parametervärdena motsvara parameterplatshållarna i den amerikanska engelska versionen. Det vill säga, parameter 1 i den lokaliserade versionen måste motsvara parameter 1 i den amerikanska engelska versionen, parameter 2 måste motsvara parameter 2, och så vidare.
Examples
A. Exempel med ett meddelandenummer
Följande exempel använder ett replikeringsmeddelande 20009 lagrat i sys.messages som, "Artikeln '%s' kunde inte läggas till i publikationen '%s'." FORMATMESSAGE ersätter värdena First Variable och Second Variable för parameterplatshållarna. Den resulterande strängen, "Artikeln 'First Variable' could not be added to the publication 'Second Variable'.", lagras i den lokala variabeln @var1.
SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1033;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;
B. Exempel med en meddelandesträng
Gäller för: SQL Server (SQL Server 2016 (13.x) till nuvarande version).
Följande exempel tar en sträng som indata.
SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS Result;
Returnerar: This is the first variable and this is the second variable.
C. Ytterligare exempel på meddelandesträngsformatering
Följande exempel visar en mängd olika formateringsalternativ.
SELECT FORMATMESSAGE('Signed int %i, %d %i, %d, %+i, %+d, %+i, %+d', 5, -5, 50, -50, -11, -11, 11, 11);
SELECT FORMATMESSAGE('Signed int with up to 3 leading zeros %03i', 5);
SELECT FORMATMESSAGE('Signed int with up to 20 leading zeros %020i', 5);
SELECT FORMATMESSAGE('Signed int with leading zero 0 %020i', -55);
SELECT FORMATMESSAGE('Bigint %I64d', 3000000000);
SELECT FORMATMESSAGE('Unsigned int %u, %u', 50, -50);
SELECT FORMATMESSAGE('Unsigned octal %o, %o', 50, -50);
SELECT FORMATMESSAGE('Unsigned hexadecimal %x, %X, %X, %X, %x', 11, 11, -11, 50, -50);
SELECT FORMATMESSAGE('Unsigned octal with prefix: %#o, %#o', 50, -50);
SELECT FORMATMESSAGE('Unsigned hexadecimal with prefix: %#x, %#X, %#X, %X, %x', 11, 11, -11, 50, -50);
SELECT FORMATMESSAGE('Hello %s!', 'TEST');
SELECT FORMATMESSAGE('Hello %20s!', 'TEST');
SELECT FORMATMESSAGE('Hello %-20s!', 'TEST');
Se även
RAISERROR (Transact-SQL)
KASTA (Transact-SQL)
sp_addmessage (Transact-SQL)
sys.messages (Transact-SQL)
CONCAT (Transact-SQL)
CONCAT_WS (Transact-SQL)
CITAT (Transact-SQL)
ERSÄTT (Transact-SQL)
OMVÄND (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
SAKER (Transact-SQL)
ÖVERSÄTTA (Transact-SQL)
Systemfunktioner (Transact-SQL)