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
类型 为 nvarchar (max) 的输出参数,如所示提供,用于接收字符串文本形式的 参数化形式的 query_text 。
@parameters
nvarchar 类型的输出参数 (max) ,按指示提供,用于接收参数名称和已在 中 @templatetext参数化的数据类型的字符串文本。
备注
如果出现下列情况,sp_get_query_template 会返回错误。
它不会参数化 query_text中的任何常量文本值。
query_text 为 NULL,不是 Unicode 字符串、语法无效或无法编译。
如果 sp_get_query_template 返回错误,则不会修改 和 @parameters 输出参数的值@templatetext。
权限
要求具有公用数据库角色的成员身份。
示例
以下示例返回包含两个常量文字值的参数化格式的查询。
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
将转换为参数。 第二个文字 400
未转换,因为它包含在 HAVING
子句中。 如果 ALTER DATABASE 的 PARAMETERIZATION 选项设置为 FORCED,sp_get_query_template 返回的结果将模拟参数化格式的查询。
下面是 @my_parameters OUTPUT
参数的参数化结果:
@0 int
注意
sp_get_query_template 输出中参数的顺序和命名可以在SQL Server的快速修复工程、Service Pack 和版本升级之间更改。 另外,升级会导致同一查询的不同的常量文字集被参数化,并且对两种输出参数的结果应用不同的文本间距。
另请参阅
系统存储过程 (Transact-SQL)
数据库引擎存储过程 (Transact-SQL)
使用计划指南指定查询参数化行为
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈