Aracılığıyla paylaş


sp_get_query_template (Transact-SQL)

Şunlar için geçerlidir: SQL Server

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.