共用方式為


sp_get_query_template (Transact-SQL)

適用於:SQL Server

傳回查詢的參數化形式。 傳回的結果會模擬使用強制參數化所產生的查詢參數化形式。 sp_get_query_template 主要是當您建立 TEMPLATE 計劃指南時使用。

Transact-SQL 語法慣例

語法

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

引數

[ @querytext = ] N'querytext'

要為其產生參數化版本的查詢。 @querytext為 nvarchar(max),且必須以單引弧括住,且前面必須加上 N Unicode 規範。

@templatetext

nvarchar(max)類型的 OUTPUT 參數,如指示提供,以接收參數化形式的字串常值@querytext

@parameters

nvarchar(max)類型的輸出參數,如指示提供,以接收參數名稱和數據類型的字串常值,這些參數名稱和數據類型會在@templatetext參數化。

備註

sp_get_query_template 當發生下列情況時,會傳回錯誤:

  • 它不會將@querytext中的任何常數值參數化。
  • @querytext為 NULL,不是 Unicode 字串、語法無效或無法編譯。

如果sp_get_query_template傳回錯誤,則不會修改@templatetext和@parameters輸出參數的值

權限

需要公用資料庫角色的成員資格。

範例

下列範例會傳回包含兩個常值之查詢的參數化形式。

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會轉換成 參數。 第二個HAVING常值 400, 不會轉換,因為它位於 子句內。 當 的 選項ALTER DATABASE設定為 FORCEDPARAMETERIZATION,模擬查詢的參數化格式所傳回sp_get_query_template的結果。

以下是參數的參數 @my_parameters OUTPUT 化結果:

@0 int

輸出 sp_get_query_template 中參數的順序和命名可能會變更 SQL Server 的快速修正工程、Service Pack 和版本升級。 升級也會讓同一個查詢將一組不同的常值參數化,並在兩個輸出參數的結果中套用不同的間距。