sp_get_query_template (Transact-SQL)
Se aplica a: SQL Server
Devuelve el formato con parámetros de una consulta. Los resultados devueltos simulan el formato con parámetros de un consulta resultante cuando se utiliza la parametrización forzada. sp_get_query_template
se usa principalmente al crear TEMPLATE
guías de plan.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Argumentos
[ @querytext = ] N'querytext'
Consulta para la que se va a generar la versión con parámetros. @querytext es nvarchar(max) y debe ir entre comillas simples y ir precedida por el N
especificador Unicode.
@templatetext
Parámetro OUTPUT de tipo nvarchar(max), proporcionado como se indica, para recibir la forma parametrizada de @querytext como literal de cadena.
@parameters
Parámetro de salida de tipo nvarchar(max), proporcionado como se indica, para recibir un literal de cadena de los nombres de parámetros y los tipos de datos que se parametrizan en @templatetext.
Comentarios
sp_get_query_template
devuelve un error cuando se produce lo siguiente:
- No parametriza ningún valor literal constante en @querytext.
- @querytext es
NULL
, no una cadena Unicode, sintácticamente no válida o no se puede compilar.
Si sp_get_query_template
devuelve un error, no modifica los valores del @templatetext y @parameters los parámetros de salida.
Permisos
Requiere la pertenencia al rol de base de datos pública .
Ejemplos
En el ejemplo siguiente se devuelve el formato con parámetros de una consulta que contiene dos valores literales constantes.
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;
Estos son los resultados con parámetros del parámetro @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
El primer literal constante, 2
, se convierte en un parámetro . El segundo literal, 400
, no se convierte porque está dentro de una HAVING
cláusula . Los resultados devueltos por sp_get_query_template
imitan la forma parametrizada de una consulta cuando la PARAMETERIZATION
opción de ALTER DATABASE
se establece FORCED
en .
Estos son los resultados con parámetros del parámetro @my_parameters OUTPUT
:
@0 int
El orden y la nomenclatura de los parámetros de la salida de sp_get_query_template
pueden cambiar entre la ingeniería de corrección rápida, el Service Pack y las actualizaciones de versiones de SQL Server. Las actualizaciones también pueden hacer que se parametrice un conjunto distinto de literales constantes para la misma consulta y que se aplique un espaciado diferente a los resultados de ambos parámetros de salida.