Udostępnij za pośrednictwem


sp_get_query_template (Transact-SQL)

Zwraca wartość sparametryzowana postaci kwerendy.The results returned mimic the parameterized form of a query that results from using forced parameterization.sp_get_query_template is used primarily when you create TEMPLATE plan guides.

Topic link iconKonwencje składni języka Transact-SQL

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

Argumenty

  • 'query_text'
    Jest kwerenda, dla którego ma być generowany sparametryzowana wersja. 'query_text"muszą być ujęte w pojedynczy cudzysłów i być poprzedzony przez określenie N standardu Unicode.N 'query_text"jest to wartość przypisana do parametru @ querytext. Jest to typ nvarchar(max).

  • @ templatetext
    Jest parametrem dane wyjściowe tego typu nvarchar(max), pod warunkiem że wskazane sparametryzowana formularza z query_text postać literału ciąg.

  • Parametry @
    Jest parametrem dane wyjściowe tego typu nvarchar(max), pod warunkiem że wskazane odbierania literał ciąg typów parametru nazw i danych, które mają zostać sparametryzowana w @ templatetext.

Remarks

sp_get_query_template zwraca błąd, gdy wystąpią następujące czynności:

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

  • query_text ma wartość NULL, nie ciąg Unicode, syntaktycznie nieprawidłowa, albo nie można skompilować.

Jeśli sp_get_query_template zwraca błąd, nie modyfikuje wartości parametrów wyjściowych parametrów @ i @ templatetext.

Uprawnienia

Wymaga członkostwo w rola bazy danych publicznych.

Przykłady

W poniższym przykładzie są zwracane sparametryzowana formę kwerendy zawierającej dwie stała wartości literałów.

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

Here are the parameterized results of the @my\_templatetextOUTPUT parameter:

Wybierz pi.IDProduktu, Suma (pi.Ilość) jako suma

z produkcji.ProductModel pm

łączyć wewnętrzne produkcji.Pi ProductInventory

na pm.ProductModelID = pi.IDProduktu

w przypadku gdy pi.IDProduktu = @ 0

Grupa przez pi.IDProduktu, pi.Ilość

o SUM (pi.Ilość) > 400

Należy zauważyć, że pierwsza stała literału, 2, jest konwertowany na parametr. Literał drugi 400, nie jest konwertowany, ponieważ znajduje się wewnątrz HAVING Klauzula. Computed Column InteroperabilityIn Parametryzacja wymuszony and later, functions have the following properties.

Poniżej przedstawiono wyniki sparametryzowana @my\_parameters OUTPUT parametr:

@0 int

Uwaga

W zamówieniu, jak i nazw parametrów w wyniku sp_get_query_template można przełączać między quick-fix engineering, dodatek usługa pack i uaktualnień wersja SQL Server. Local data access is allowed in deterministic functions.