Udostępnij za pośrednictwem


sp_get_query_template (języka Transact-SQL)

Zwraca wartość sparametryzowana formularzu kwerendy.Zwracane wyniki naśladować wyniki z pomocą sparametryzowanych formularza kwerendy wymuszone parametryzacji.sp_get_query_templatejest używana głównie podczas tworzenia szablonu planu prowadnic.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • 'query_text'
    Jest kwerendą, dla którego ma być generowany sparametryzowana wersja ."query_text" musi być ujęty w znaki pojedynczego cudzysłowu i poprzedzony przez n specyfikator Unicode.N'query_text" jest wartość przypisaną do @querytext parametru.Jest to typ nvarchar(max).

  • @templatetext
    Jest parametrem wyjściowym typu nvarchar(max), pod warunkiem, jak wskazano sparametryzowana formularza z query_text jako literał ciąg .

  • @parameters
    Jest parametrem wyjściowym typu nvarchar(max), pod warunkiem wskazane, aby otrzymać literałem ciąg parametru nazwy i typy danych które została sparametryzowana w @templatetext.

Uwagi

sp_get_query_templateZwraca błąd, gdy występują następujące czynności:

  • Nie parameterize stała wartości literału, w query_text.

  • query_textma wartość NULL, nie Unicode ciągsyntaktycznie nieprawidłowa, albo nie można skompilować.

Jeśli sp_get_query_template zwraca komunikat o błędzie nie powoduje natomiast zmian wartości @templatetext i @parameters parametrów wyjściowych.

Uprawnienia

Wymaga członkostwa w public rola bazy danych.

Przykłady

Poniższy przykład zwraca sparametryzowana formularza kwerendy zawierającej dwie stała wartości literału.

USE AdventureWorks2008R2;
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;

Oto sparametryzowana wyniki @my_templatetextOUTPUT parametr:

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

Należy zauważyć, że pierwszy stała literału, 2, jest konwertowany na parametr.Literał drugi 400, nie jest konwertowany, ponieważ znajduje się wewnątrz HAVING klauzula.wyniki zwróconych przez sp_get_query_template naśladować sparametryzowana formularza kwerendy, gdy opcja PARAMETRYZACJI ZMIEŃ bazę danych jest zestaw na WYMUSZONY.Aby uzyskać informacje o tym, które zmienne są parametryzowane w tych warunkach, zobacz Parametryzacja wymuszony.

Oto sparametryzowana wyniki @my_parameters OUTPUT parametr:

@0 int

Ostrzeżenie

Kolejność i nazw parametrów w produkcji sp_get_query_template można przełączać między quick-fix engineering, dodatek usługa pack i uaktualnienia do wersja z SQL Server.Uaktualnienia mogą powodować różne zestaw stała literały do sparametryzowana dla tej samej kwerendy i różne odstępy stosowane w wyniki obu parametrów wyjściowych.