Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Sestavuje zprávu z existující zprávy v sys.messages nebo z poskytnutého řetězce. Funkčnost FORMATMESSAGE se podobá příkazu RAISERROR. RAISERROR však zprávu okamžitě vytiskne, zatímco FORMATMESSAGE vrátí formátovanou zprávu k dalšímu zpracování.
Syntaxe
FORMATMESSAGE ( { msg_number | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )
Arguments
msg_number
Je ID zprávy uložené v sys.messages. Pokud je msg_number = <13000, nebo pokud zpráva v sys.messages neexistuje, vrátí se NULL.
msg_string
Platí na: SQL Server (SQL Server 2016 (13.x) až po současnou verzi).
Je řetězec uzavřený v uvozovkách a obsahující zástupce hodnot parametrů. Chybová zpráva může mít maximálně 2 047 znaků. Pokud zpráva obsahuje 2 048 nebo více znaků, zobrazí se pouze prvních 2 044 znaků a přidá se tříčka, která označuje, že zpráva byla zkrácena. Všimněte si, že parametry substituce spotřebovávají více znaků, než ukazuje výstup, kvůli chování interního úložiště. Pro informace o struktuře řetězce zprávy a použití parametrů v řetězci viz popis argumentu msg_str v RAISERROR (Transact-SQL).
@msg_variable
Platí na: SQL Server (SQL Server 2016 (13.x) až po současnou verzi).
Je proměnná nvarchar nebo varchar, která obsahuje řetězec splňující kritéria msg_string výše.
param_value
je hodnota parametru pro použití ve zprávě. Může mít více než jednu hodnotu parametru. Hodnoty musí být zadány v pořadí, v jakém se ve zprávě objevují zástupné proměnné. Maximální počet hodnot je 20.
Návratové typy
nvarchar
Poznámky
Stejně jako příkaz RAISERROR, FORMATMESSAGE upravuje zprávu nahrazením zadaných hodnot parametrů za zástupné proměnné ve zprávě. Pro více informací o zástupných zástupcích povolených v chybových zprávách a o procesu úprav viz RAISERROR (Transact-SQL).
FORMATMESSAGE vyhledá zprávu v aktuálním jazyce uživatele. Pro systémové zprávy (msg_number<=50000), pokud neexistuje lokalizovaná verze zprávy, používá se verze v jazyce OS. Pro uživatelské zprávy (msg_number>50000), pokud neexistuje lokalizovaná verze zprávy, používá se anglická verze.
Pro lokalizované zprávy musí dodané hodnoty parametrů odpovídat zástupcům parametrů v americké anglické verzi. To znamená, že parametr 1 v lokalizované verzi musí odpovídat parametru 1 v americké anglické verzi, parametr 2 musí odpovídat parametru 2 a tak dále.
Examples
A. Příklad s číslem zprávy
Následující příklad používá replikační zprávu 20009 uloženou v sys.messages jako "Článek '%s' nemohl být přidán do publikace '%s'." FORMATMESSAGE nahrazuje hodnoty First Variable a Second Variable za zástupce parametrů. Výsledný řetězec "Článek 'První proměnná' nemohl být přidán k publikaci 'Druhá proměnná'.", je uložen v lokální proměnné @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. Příklad s řetězcem zprávy
Platí na: SQL Server (SQL Server 2016 (13.x) až po současnou verzi).
Následující příklad bere řetězec jako vstup.
SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS Result;
Vrací: This is the first variable and this is the second variable.
C. Další příklady formátování řetězců zpráv
Následující příklady ukazují různé možnosti formátování.
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');
Viz také
RAISERROR (Transact-SQL)
HOĎ (Transact-SQL)
sp_addmessage (Transact-SQL)
sys.messages (Transact-SQL)
CONCAT (Transact-SQL)
CONCAT_WS (Transact-SQL)
QUOTENAME (Transact-SQL)
NAHRADIT (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)
Systémové funkce (Transact-SQL)