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 は、主に 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. 'ステートメント' 単一引用符で囲む必要があり、前に、n 個の Unicode を指定します。'query_text' must be enclosed in single quotation marks and be preceded by the N Unicode specifier. N'ステートメント' に割り当てられた値は、@querytextパラメーター。N'query_text' is the value assigned to the @querytext parameter. これは、型のnvarchar (max) します。This is of type nvarchar(max).

型の出力パラメーター 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.

型の出力パラメーター nvarchar (max) でパラメーター化されたパラメーター名とデータ型のリテラル文字列を受信する、指定したとおりに提供@templatetextします。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:

  • 内の定数リテラル値をパラメーター化はステートメントします。It does not parameterize any constant literal values in 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