sp_get_query_template (Transact-SQL)

パラメーター化形式のクエリを返します。返される結果は、強制パラメーター化の使用によるパラメーター化形式のクエリに似ています。sp_get_query_template は、主に TEMPLATE プラン ガイドの作成時に使用します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

  • 'query_text'
    パラメーター化バージョンを生成する基となるクエリです。'query_text' は、単一引用符で囲み、前に Unicode を指定する N を付ける必要があります。N'query_text' が、@querytext パラメーターに割り当てられる値です。これは nvarchar(max) 型です。

  • @templatetext
    nvarchar(max) 型の出力パラメーターです。指定したとおりに提供され、パラメーター化形式の query_text を文字列リテラルとして受け取ります。

  • @parameters
    nvarchar(max) 型の出力パラメーターです。指定したとおりに提供され、@templatetext でパラメーター化されたパラメーター名とデータ型の文字列リテラルを受け取ります。

説明

sp_get_query_template は、以下のことが発生した場合にエラーを返します。

  • パラメーター化する定数リテラル値が query_text に 1 つもありません。

  • query_text が、NULL であるか、Unicode 文字列でないか、構文が正しくないか、コンパイルできないかのいずれかです。

sp_get_query_template によってエラーが返された場合、@templatetext 出力パラメーターおよび @parameters 出力パラメーターの値は変更されません。

権限

public データベース ロールのメンバーシップが必要です。

次の例では、2 つの定数リテラル値が含まれたパラメーター化形式のクエリが返されます。

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;

次は、@my_templatetextOUTPUT パラメーターのパラメーター化の結果です。

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 がパラメーターに変換されます。2 番目のリテラル 400 は HAVING 句の内部にあるため、変換されません。sp_get_query_template によって返される結果は、ALTER DATABASE の PARAMETERIZATION オプションが FORCED に設定されている場合のパラメーター化形式クエリに似ています。これらの条件下でパラメーター化される変数については、「強制パラメータ化」を参照してください。

次は、@my_parameters OUTPUT パラメーターのパラメーター化の結果です。

@0 int
注意

sp_get_query_template の出力内のパラメーターの順序と名前は、Quick Fix Engineering、Service Pack、および SQL Server のバージョンのアップグレードによって変化する可能性があります。アップグレードによって、同じクエリに対して異なる定数リテラル群がパラメーター化されるようになったり、両方の出力パラメーターの結果に使用される文字間隔が変化したりする可能性もあります。