sp_get_query_template (Transact-SQL)
適用対象:SQL Server
クエリのパラメーター化された形式を返します。 返される結果は、強制パラメーター化の使用によるパラメーター化形式のクエリに似ています。 sp_get_query_templateは、主に TEMPLATE プラン ガイドを作成するときに使用されます。
構文
sp_get_query_template
[ @querytext = ] N'query_text'
, @templatetext OUTPUT
, @parameters OUTPUT
引数
'query_text'
パラメーター化されたバージョンを生成するクエリです。 'query_text' は、単一引用符で囲み、その前に N 個の Unicode 指定子を付ける必要があります。 N'query_text' は、 パラメーターに@querytext割り当てられた値です。 これは nvarchar(max) 型です。
@templatetext
パラメーター化された形式の query_text を文字列リテラルとして受け取るために、指定された nvarchar(max)型の出力パラメーターです。
@parameters
でパラメーター化@templatetextされたパラメーター名とデータ型の文字列リテラルを受け取るために、指定された nvarchar(max)型の出力パラメーターです。
解説
sp_get_query_template は、以下のことが発生した場合にエラーを返します。
query_text内の定数リテラル値はパラメーター化されません。
query_text は NULL で、Unicode 文字列ではなく、構文的に無効であるか、コンパイルできません。
sp_get_query_templateがエラーを返した場合、 および @parameters 出力パラメーターの値は@templatetext変更されません。
アクセス許可
public データベース ロールのメンバーシップが必要です。
例
次の例では、2 つの定数リテラル値が含まれたパラメーター化形式のクエリが返されます。
USE AdventureWorks2022;
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_templatetext``OUTPUT
示します。
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の出力でのパラメーターの順序と名前付けは、クイック修正エンジニアリング、サービス パック、およびSQL Serverのバージョン アップグレードの間で変わる可能性があります。 アップグレードにより、同じクエリに対して異なる定数リテラルのセットがパラメーター化され、両方の出力パラメーターの結果に異なる間隔が適用される場合もあります。
参照
システム ストアド プロシージャ (Transact-SQL)
データベース エンジン ストアド プロシージャ (Transact-SQL)
プラン ガイドを使用したクエリのパラメーター化動作の指定
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示