FORMATMESSAGE (Transact-SQL)
Crea un messaggio in base a un messaggio esistente di sys.messages. La funzionalità di FORMATMESSAGE è simile a quella dell'istruzione RAISERROR. Tuttavia, mentre RAISERROR stampa il messaggio immediatamente, FORMATMESSAGE restituisce il messaggio modificato per ulteriori elaborazioni.
Convenzioni della sintassi Transact-SQL
Sintassi
FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )
Argomenti
msg_number
ID del messaggio archiviato in sys.messages. Se msg_number è <= 13000 oppure se il messaggio non esiste in sys.messages, viene restituito NULL.param_value
Valore del parametro da utilizzare nel messaggio. È possibile specificare più di un valore di parametro. È necessario specificare i valori nell'ordine in cui le variabili di segnaposto sono elencate nel messaggio. Il numero di valori massimo consentito è 20.
Tipi restituiti
nvarchar
Osservazioni
In modo analogo all'istruzione RAISERROR, l'istruzione FORMATMESSAGE modifica il messaggio mediante la sostituzione delle variabili di segnaposto con i valori di parametro specificati. Per ulteriori informazioni sui segnaposti supportati nei messaggi di errore e sul processo di modifica, vedere RAISERROR (Transact-SQL).
L'istruzione FORMATMESSAGE esegue la ricerca del messaggio nella lingua corrente dell'utente. Se non esiste una versione localizzata del messaggio, viene utilizzata la versione inglese (Stati Uniti).
Per i messaggi localizzati, i parametri specificati devono corrispondere ai segnaposti del parametro nella versione inglese (Stati Uniti). Ovvero, il parametro 1 nella versione localizzata deve corrispondere al parametro 1 nella versione inglese (Stati Uniti), il parametro 2 deve corrispondere al parametro 2 e così via.
Esempi
Nell'esempio seguente viene utilizzato un messaggio di replica 20009 archiviato in sys.messages, ad esempio "Impossibile aggiungere l'articolo '%s' alla pubblicazione '%s'". FORMATMESSAGE sostituisce i valori First Variable e Second Variable per i segnaposti dei parametri. La stringa risultante, "Impossibile aggiungere l'articolo 'First Variable' alla pubblicazione 'Second Variable'", viene archiviata nella variabile locale @var1.
SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1040;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;