Bagikan melalui


FORMATMESSAGE (Transact-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Membuat pesan dari pesan yang ada di sys.messages atau dari string yang disediakan. Fungsionalitas FORMATMESSAGE menyerupan pernyataan RAISERROR. Namun, RAISERROR segera mencetak pesan, sementara FORMATMESSAGE mengembalikan pesan yang diformat untuk pemrosesan lebih lanjut.

Konvensi sintaks transact-SQL

Sintaks

FORMATMESSAGE ( { msg_number  | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )  

Argumen

msg_number
Adalah ID pesan yang disimpan di sys.messages. Jika msg_number = <13000, atau jika pesan tidak ada di sys.messages, NULL dikembalikan.

msg_string
Berlaku untuk: SQL Server (SQL Server 2016 (13.x) melalui versi saat ini).

Adalah string yang diapit dalam tanda kutip tunggal dan berisi tempat penampung nilai parameter. Pesan kesalahan dapat memiliki maksimal 2.047 karakter. Jika pesan berisi 2.048 karakter atau lebih, hanya 2.044 karakter pertama yang ditampilkan dan elipsis ditambahkan untuk menunjukkan bahwa pesan telah dipotong. Perhatikan bahwa parameter substitusi menggunakan lebih banyak karakter daripada yang ditunjukkan oleh output karena perilaku penyimpanan internal. Untuk informasi tentang struktur string pesan dan penggunaan parameter dalam string, lihat deskripsi argumen msg_str di RAISERROR (Transact-SQL).

@msg_variable
Berlaku untuk: SQL Server (SQL Server 2016 (13.x) melalui versi saat ini).

Adalah variabel nvarchar atau varchar yang berisi string yang mematuhi kriteria untuk msg_string di atas.

param_value
Adalah nilai parameter untuk digunakan dalam pesan. Bisa lebih dari satu nilai parameter. Nilai harus ditentukan dalam urutan di mana variabel tempat penampung muncul dalam pesan. Jumlah maksimum nilai adalah 20.

Jenis Kembalian

nvarchar

Keterangan

Seperti pernyataan RAISERROR, FORMATMESSAGE mengedit pesan dengan mengganti nilai parameter yang disediakan untuk variabel tempat penampung dalam pesan. Untuk informasi selengkapnya tentang tempat penampung yang diizinkan dalam pesan kesalahan dan proses pengeditan, lihat RAISERROR (Transact-SQL).

FORMATMESSAGE mencari pesan dalam bahasa pengguna saat ini. Untuk pesan sistem (msg_number<=50000), jika tidak ada versi pesan yang dilokalkan, versi bahasa OS digunakan. Untuk pesan pengguna (msg_number>50000), jika tidak ada versi pesan yang dilokalkan, versi bahasa Inggris digunakan.

Untuk pesan yang dilokalkan, nilai parameter yang disediakan harus sesuai dengan tempat penampung parameter dalam versi bahasa Inggris A.S. Artinya, parameter 1 dalam versi yang dilokalkan harus sesuai dengan parameter 1 dalam versi bahasa Inggris AS, parameter 2 harus sesuai dengan parameter 2, dan sebagainya.

Contoh

J. Contoh dengan nomor pesan

Contoh berikut menggunakan pesan 20009 replikasi yang disimpan dalam sys.messages sebagai, "Artikel '%s' tidak dapat ditambahkan ke publikasi '%s'." FORMATMESSAGE menggantikan nilai First Variable dan Second Variable untuk tempat penampung parameter. String yang dihasilkan, "Artikel 'Variabel Pertama' tidak dapat ditambahkan ke publikasi 'Variabel Kedua'.", disimpan dalam variabel @var1lokal .

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. Contoh dengan string pesan

Berlaku untuk: SQL Server (SQL Server 2016 (13.x) melalui versi saat ini).

Contoh berikut mengambil string sebagai input.

SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS Result;  

Kembali: This is the first variable and this is the second variable.

C. Contoh pemformatan string pesan tambahan

Contoh berikut menunjukkan berbagai opsi pemformatan.

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');  

Lihat Juga

RAISERROR (Transact-SQL)
THROW (Transact-SQL)
sp_addmessage (T-SQL)
sys.messages (Transact-SQL)
CONCAT (T-SQL)
CONCAT_WS (T-SQL)
QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)
TERBALIK (Transact-SQL)
STRING_AGG (T-SQL)
STRING_ESCAPE (T-SQL)
STUFF (Transact-SQL)
TERJEMAHKAN (Transact-SQL)
Fungsi Sistem (Transact-SQL)