共用方式為


sp_get_query_template (Transact-SQL)

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

適用於:SQL Server (SQL Server 2008 至目前版本)。

主題連結圖示 Transact-SQL 語法慣例

語法

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
    這是依照指示來提供之 nvarchar(max) 類型的輸出參數,用來將 query_text 的參數化形式當做一個字串常值來接收。

  • @parameters
    這是依照指示提供之 nvarchar(max) 類型的輸出參數,用來接收 @templatetext 中已參數化之參數名稱和資料類型的字串常值。

備註

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

  • 它並不會參數化 query_text 中的任何常數常值。

  • query_text 是 NULL,不是 Unicode 字串,其語法無效或無法編譯。

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

權限

需要 public 資料庫角色中的成員資格。

範例

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

USE AdventureWorks2012;
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 會轉換成參數。 第二個常值 400 並未轉換,因為它在 HAVING 子句內。 當 ALTER DATABASE 的 PARAMETERIZATION 選項設為 FORCED 時,sp_get_query_template 傳回的結果會模擬參數化形式的查詢。

以下是 @my\_parameters OUTPUT 參數的參數化結果:

@0 int

注意

在 SQL Server 的快速修復工程、Service Pack 和版本升級之間,sp_get_query_template 輸出中的參數順序和命名可能會不同。升級也可能造成針對相同查詢參數化不同組的常數常值,在兩個輸出參數的結果中,可能會套用不同的間距。

請參閱

參考

系統預存程序 (Transact-SQL)

Database Engine 預存程序 (Transact-SQL)

概念

使用計畫指南指定查詢參數化行為