sp_get_query_template (Transact-sql)

Bir sorgu parametreli formu verir. Sonuçları döndürülen taklit Zorlanmış parameterization kullanımından kaynaklanan bir sorgu parametreli formu. sp_get_query_templateÖncelikle, şablon planı kılavuzları oluştururken kullanılır.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

sp_get_query_template
   [ @querytext = ] N'query_text'
   , @templatetext OUTPUT 
   , @parameters OUTPUT 

Bağımsız değişkenler

  • 'query_text'
    Parametreli versiyonu üretilecek olan sorgudur. 'query_text' tek tırnak işareti içine alınmalıdır ve önünde n Unicode belirleyici. N'query_text' atanan değeri @querytextparametresi. Bu tür olduğunu nvarchar(max).

  • @templatetext
    Bir çıktı parametresi türü olan nvarchar(max), belirtildiği parametreli formu almak için sağlanan query_textbir dize olarak.

  • @parameters
    Bir çıktı parametresi türü olan nvarchar(max), belirtildiği, içinde parametreli parametre adı ve veri türü dize hazır bilgi almak için sağlanan @templatetext.

Açıklamalar

sp_get_query_templateAşağıdakiler ortaya çıktığında, bir hata döndürür:

  • O herhangi bir sabit hazır bilgi değerleri parameterize değil query_text.

  • query_textNULL, değil bir Unicode dize sözdizimi geçersiz veya derlenemez.

Eğer sp_get_query_template bir hata döndürür, bu değiştirme değerleri @templatetextve @parametersçıkış parametreleri.

İzinler

Üyelik publicveritabanı rolü.

Örnekler

Aşağıdaki örnek, iki sabit hazır bilgi değerleri içeren bir sorgu parametreli formu verir.

USE AdventureWorks2012;
GO
DECLARE @my_templatetext nvarchar(max)
DECLARE @my_parameters nvarchar(max)
EXEC 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;

USE AdventureWorks2012;
GO
DECLARE @my_templatetext nvarchar(max)
DECLARE @my_parameters nvarchar(max)
EXEC 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;

İşte Parametreli sonuçlarını @my\_templatetext OUTPUTparametresi:

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

Unutmayın ilk sabit hazır bilgi, 2, parametre dönüştürülür. İkinci harf 400, çünkü onun içinde dönüştürülmez bir HAVINGtümcesi. Tarafından döndürülen sonuçlarını sp_get_query_templateforced PARAMETERIZATION seçeneği alter DATABASE ayarlandığında bir sorgu parametreli formu taklit etmek.

İşte Parametreli sonuçlarını @my\_parameters OUTPUTparametresi:

@0 int

@0 int

[!NOT]

Sipariş ve çıkış parametreleri adlandırma sp_get_query_templatearasında çabuk-saptamak Mühendisliği, hizmet paketini ve sürüm yükseltmeleri değiştirebilirsiniz SQL Server. Yükseltmeleri de aynı sorgunun parametreli sabit harflerin farklı bir dizi neden olabilir ve sonuçları her iki uygulanacak farklı aralığı çıkış parametreleri.

Ayrıca bkz.

Başvuru

Sistem saklı yordamları (Transact-sql)

Veritabanı Altyapısı depolanan yordamlar (Transact-sql)

Kavramlar

Plan kılavuzları kullanarak sorgu Parameterization davranışı belirtme