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.
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