sp_get_query_template (Transact-sql)sp_get_query_template (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

パラメーター化された形式のクエリを返します。Returns the parameterized form of a query. 返される結果は、強制パラメーター化の使用によるパラメーター化形式のクエリに似ています。The results returned mimic the parameterized form of a query that results from using forced parameterization. sp_get_query_template は、主にテンプレートプランガイドを作成するときに使用されます。sp_get_query_template is used primarily when you create TEMPLATE plan guides.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


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


パラメーター化されたバージョンを生成するクエリを指定します。Is the query for which the parameterized version is to be generated. 'query_text' は、単一引用符で囲む必要があります。また、前には N Unicode 指定子を指定する必要があります。'query_text' must be enclosed in single quotation marks and be preceded by the N Unicode specifier. N 'query_text' は、 @querytextパラメーターに割り当てられた値です。N'query_text' is the value assigned to the @querytext parameter. Nvarchar (max) 型です。This is of type nvarchar(max).

パラメーター化された形式のquery_textを文字列リテラルとして受け取る、 nvarchar (max) 型の出力パラメーターを指定します。Is an output parameter of type nvarchar(max), provided as indicated, to receive the parameterized form of query_text as a string literal.

は、に@templatetextよってパラメーター化されたパラメーター名とデータ型の文字列リテラルを受け取る、 nvarchar (max) 型の出力パラメーターです。Is an output parameter of type nvarchar(max), provided as indicated, to receive a string literal of the parameter names and data types that have been parameterized in @templatetext.


sp_get_query_template は、以下のことが発生した場合にエラーを返します。sp_get_query_template returns an error when the following occur:

  • Query_textの定数リテラル値をパラメーター化しません。It does not parameterize any constant literal values in query_text.

  • query_textが NULL であるか、Unicode 文字列ではないか、構文が正しくないか、またはコンパイルできません。query_text is NULL, not a Unicode string, syntactically not valid, or cannot be compiled.

Sp_get_query_template がエラーを返す場合、 @templatetextと@parametersの出力パラメーターの値は変更されません。If sp_get_query_template returns an error, it does not modify the values of the @templatetext and @parameters output parameters.


public データベース ロールのメンバーシップが必要です。Requires membership in the public database role.


次の例では、2 つの定数リテラル値が含まれたパラメーター化形式のクエリが返されます。The following example returns the parameterized form of a query that contains two constant literal values.

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

@my_templatetext``OUTPUTパラメーターのパラメーター化された結果を次に示します。Here are the parameterized results of the @my_templatetext``OUTPUT parameter:

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

最初の定数リテラル2のは、パラメーターに変換されることに注意してください。Note that the first constant literal, 2, is converted to a parameter. 2 番目のリテラル 400HAVING 句の内部にあるため、変換されません。The second literal, 400, is not converted because it is inside a HAVING clause. sp_get_query_template によって返される結果は、ALTER DATABASE の PARAMETERIZATION オプションが FORCED に設定されている場合のパラメーター化形式クエリに似ています。The results returned by sp_get_query_template mimic the parameterized form of a query when the PARAMETERIZATION option of ALTER DATABASE is set to FORCED.

@my_parameters OUTPUTパラメーターのパラメーター化された結果を次に示します。Here are the parameterized results of the @my_parameters OUTPUT parameter:

@0 int  


sp_get_query_template の出力内のパラメーターの順序と名前は、Quick Fix Engineering、Service Pack、および SQL ServerSQL Server のバージョンのアップグレードによって変化する可能性があります。The order and naming of parameters in the output of sp_get_query_template can change between quick-fix engineering, service pack, and version upgrades of SQL ServerSQL Server. また、アップグレードによって、同じクエリに対して異なる定数リテラルのセットがパラメーター化され、両方の出力パラメーターの結果に適用される間隔が異なる場合もあります。Upgrades can also cause a different set of constant literals to be parameterized for the same query, and different spacing to be applied in the results of both output parameters.

参照See Also

システムストアドプロシージャ (Transact-sql) System Stored Procedures (Transact-SQL)
Transact-sql)(のストアドプロシージャのデータベースエンジン Database Engine Stored Procedures (Transact-SQL)
プラン ガイドを使用したクエリのパラメーター化動作の指定Specify Query Parameterization Behavior by Using Plan Guides