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.
Sorgunun parametreli biçimini döndürür. Döndürülen sonuçlar, zorlamalı parametreleme kullanılarak elde edilen sorgunun parametreleştirilmiş biçimini taklit etti.
sp_get_query_template
öncelikli olarak plan kılavuzları oluşturduğunuzda TEMPLATE
kullanılır.
Transact-SQL söz dizimi kuralları
Sözdizimi
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Tartışmalar
Önemli
Genişletilmiş saklı yordamlar için bağımsız değişkenler, Sözdizimi bölümünde açıklandığı gibi belirli bir sırada girilmelidir. Parametreler sıra dışı girilirse bir hata iletisi oluşur.
[ @querytext = ] N'querytext'
Parametreli sürümün oluşturulacağı sorgu.
@querytextnvarchar(max) şeklindedir ve tek tırnak içine alınmalı ve başında Unicode tanımlayıcısı N
bulunmalıdır.
@templatetext
belirtilen şekilde sağlanan nvarchar(max) türünde bir OUTPUT parametresi, @querytext parametreli biçimini dize değişmez değeri olarak alır.
@parameters
@templatetext parametreli parametre adlarının ve veri türlerinin dize değişmez değerini almak için belirtilen şekilde sağlanan nvarchar(max) türünde bir çıkış parametresi.
Açıklamalar
sp_get_query_template
aşağıdakiler oluştuğunda bir hata döndürür:
- @querytext sabit değişmez değer parametreleştirmez.
-
NULL
@querytext, Unicode dizesi değil, aynı şekilde geçerli değil veya derlenemez.
Hata döndürürse sp_get_query_template
, @templatetext ve @parameters çıkış parametrelerinin değerlerini değiştirmez.
İzinler
Genel veritabanı rolünde üyelik gerektirir.
Örnekler
Aşağıdaki örnek, iki sabit değişmez değer içeren bir sorgunun parametreli biçimini döndürür.
USE AdventureWorks2022;
GO
DECLARE @my_templatetext AS NVARCHAR (MAX);
DECLARE @my_parameters AS NVARCHAR (MAX);
EXECUTE sp_get_query_template N'SELECT pi.ProductID, SUM(pi.Quantity) AS Total
FROM Production.ProductModel pm
INNER JOIN Production.ProductInventory pi
ON pm.ProductModelID = pi.ProductID
WHERE pi.ProductID = 2
GROUP BY pi.ProductID, pi.Quantity
HAVING SUM(pi.Quantity) > 400',
@my_templatetext OUTPUT,
@my_parameters OUTPUT;
SELECT @my_templatetext;
SELECT @my_parameters;
Parametrenin parametreleştirilmiş sonuçları @my_templatetext OUTPUT
şunlardır:
select pi . ProductID , SUM ( pi . Quantity ) as Total
from Production . ProductModel pm
inner join Production . ProductInventory pi
on pm . ProductModelID = pi . ProductID
where pi . ProductID = @0
group by pi . ProductID , pi . Quantity
having SUM ( pi . Quantity ) > 400
İlk sabit değişmez değer olan 2
, bir parametreye dönüştürülür. İkinci değişmez değer olan 400
, bir HAVING
yan tümce içinde olduğundan dönüştürülemez. tarafından döndürülen sp_get_query_template
sonuçlar, seçeneği ALTER DATABASE
olarak ayarlandığında sorgunun PARAMETERIZATION
parametreli biçimini taklit edinFORCED
.
Parametrenin parametreleştirilmiş sonuçları @my_parameters OUTPUT
şunlardır:
@0 int
çıktısında sp_get_query_template
parametrelerin sırası ve adlandırması, SQL Server'ın hızlı düzeltme mühendisliği, hizmet paketi ve sürüm yükseltmeleri arasında değişebilir. Yükseltmeler aynı sorgu için farklı bir sabit değişmez değer kümesinin parametreleştirilmesine ve her iki çıkış parametresinin sonuçlarına farklı aralıkların uygulanmasına da neden olabilir.