Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Mevcut bir mesajdan sys.messages veya verilen bir diziden bir mesaj oluşturur. FORMATMESSAGE'nin işlevselliği RAISERROR ifadesine benzer. Ancak RAISERROR mesajı hemen yazdırırken, FORMATMESSAGE biçimlendirilmiş mesajı daha fazla işleme için geri döndürür.
Transact-SQL söz dizimi kuralları
Sözdizimi
FORMATMESSAGE ( { msg_number | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )
Arguments
msg_number
sys.messages'te saklanan mesajın kimliğidir.
Eğer msg_number<= 13000 ise veya mesaj sys.messages'te yoksa, NULL döner.
msg_string
Geçerlidir: SQL Server (SQL Server 2016 (13.x)) 'den günümüz sürümüne kadar).
Tek tırnak içinde kaplı ve parametre değeri yer tutucuları içeren bir dizidir. Hata mesajı en fazla 2.047 karakter olabilir. Mesaj 2.048 veya daha fazla karakter içeriyorsa, yalnızca ilk 2.044 karakter gösterilir ve mesajın kesildiğini belirtmek için bir üç nokta eklenir. Dahili depolama davranışı nedeniyle çıktının gösterdiğinden daha fazla karakter tükettiğini unutmayın. Bir mesaj dizisinin yapısı ve dizedeki parametrelerin kullanımı hakkında bilgi için RAISERROR (Transact-SQL)içindeki msg_str argümanının açıklamasına bakınız.
@msg_variable
Geçerlidir: SQL Server (SQL Server 2016 (13.x)) 'den günümüz sürümüne kadar).
Yukarıdaki kriterlere uygun bir sicime sahip bir nvarchar veya varchar değişkenidir msg_string .
param_value
Mesajda kullanılacak bir parametre değeridir. Birden fazla parametre değeri olabilir. Değerler, mesajda yer tutucu değişkenlerin görünme sırasına göre belirtilmelidir. Maksimum değer sayısı 20'dir.
Dönüş Türleri
nvarchar
Açıklamalar
RAISERROR ifadesi gibi, FORMATMESSAGE mesajı da mesajdaki yer tutucu değişkenlerin yerine verilen parametre değerlerini koyarak düzenler. Hata mesajlarında izin verilen yer tutucular ve düzenleme süreci hakkında daha fazla bilgi için bkz. RAISERROR (Transact-SQL) bkz.
FORMATMESSAGE, kullanıcının mevcut dilinde mesajı arar. Sistem mesajları için (msg_number<=50000), eğer mesajın yerelleştirilmiş versiyonu yoksa, işletim sistemi dili versiyonu kullanılır. Kullanıcı mesajları için (msg_number>50000), eğer mesajın yerelleştirilmiş versiyonu yoksa, İngilizce versiyon kullanılır.
Yerel mesajlar için, sağlanan parametre değerleri ABD İngilizce versiyonundaki parametre yer tutucularına karşılık gelmelidir. Yani, yerelleştirilmiş versiyonda parametre 1, ABD İngilizce versiyonundaki parametre 1'e, parametre 2'nin parametre 2'ye karşılık gelmesine ve benzeri bir şekilde karşılık gelmelidir.
Örnekler
A. Mesaj numarasıyla bir örnek
Aşağıdaki örnek, sys.messages'te saklanan bir çoğaltma mesajını 20009 "Makale '%s' ' yayınına eklenemedi '%s' şeklinde kullanılır. FORMATMESSAGE, parametreler yer tutucuları için değerleri First Variable ve Second Variable yerine koyar. Ortaya çıkan "The article 'First Variable' not not be added to the publication 'Second Variable'.'" dizi, yerel değişkende @var1saklanır.
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. Mesaj dizisiyle bir örneği
Geçerlidir: SQL Server (SQL Server 2016 (13.x)) 'den günümüz sürümüne kadar).
Aşağıdaki örnek, bir dizi girişi olarak alır.
SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS Result;
Dönüşler: This is the first variable and this is the second variable.
C. Ek mesaj dizisi biçimlendirme örnekleri
Aşağıdaki örnekler çeşitli biçimlendirme seçeneklerini göstermektedir.
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');
Ayrıca Bkz.
RAISERROR (Transact-SQL)
ATMA (Transact-SQL)
sp_addmessage (Transact-SQL)
sys.messages (Transact-SQL)
CONCAT (Transact-SQL)
CONCAT_WS (Transact-SQL)
ALINTI (Transact-SQL)
DEĞİşTİr (Transact-SQL)
TERS (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
ŞEYLER (Transact-SQL)
ÇEVIR (Transact-SQL)
Sistem İşlevleri (Transact-SQL)