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.

Icona di collegamento a un argomento 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;

Vedere anche

Riferimento

THROW (Transact-SQL)

sp_addmessage (Transact-SQL)

sys.messages (Transact-SQL)

Funzioni di sistema (Transact-SQL)

RAISERROR (Transact-SQL)