sp_get_query_template

返回参数化格式的查询。返回的结果模拟使用强制参数化得到的参数化格式的查询。sp_get_query_template 主要在创建 TEMPLATE 计划指南时使用。

主题链接图标Transact-SQL 语法约定

语法

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

参数

  • 'query_text'
    要为其生成参数化版本的查询。'query_text' 必须括在英文单引号中,并且前面必须加上 Unicode 说明符 NN'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 AdventureWorks;
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
ms186908.note(zh-cn,SQL.90).gif注意:
在 SQL Server 的各个快速修复工程、Service Pack 和版本升级之间,sp_get_query_template 输出中参数的顺序和命名会发生变化。另外,升级会导致同一查询的不同的常量文字集被参数化,并且对两种输出参数的结果应用不同的文本间距。

请参阅

参考

系统存储过程 (Transact-SQL)
数据库引擎存储过程 (Transact-SQL)

其他资源

使用计划指南指定查询参数化行为
设计参数化查询的计划指南

帮助和信息

获取 SQL Server 2005 帮助