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 guías de plan TEMPLATE.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_get_query_template
[ @querytext = ] N'query_text'
, @templatetext OUTPUT
, @parameters OUTPUT
Argumentos
'query_text'
Es la consulta para la que se va a generar la versión con parámetros. 'query_text' debe ir entre comillas simples y ir precedida por el especificador N Unicode. N'query_text' es el valor asignado al @querytext parámetro . Es de tipo nvarchar(max).
@templatetext
Es un parámetro de salida de tipo nvarchar(max), proporcionado como se indica, para recibir la forma parametrizada de query_text como literal de cadena.
@parameters
Es un 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 han parametrizado en @templatetext.
Comentarios
sp_get_query_template devuelve un error cuando se produce lo siguiente:
No parametriza ningún valor literal constante en query_text.
query_text 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 de los @templatetext parámetros de salida y @parameters .
Permisos
Debe pertenecer al rol de base de datos public.
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
Observe que el primer literal constante, 2
, se convierte en un parámetro. El segundo literal, 400
, no se convierte porque está en una cláusula HAVING
. Los resultados devueltos por sp_get_query_template simulan la forma con parámetros de una consulta cuando la opción PARAMETERIZATION de ALTER DATABASE está establecida en FORCED.
Estos son los resultados con parámetros del parámetro @my_parameters OUTPUT
:
@0 int
Nota
El orden y la nomenclatura de los parámetros en 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.
Consulte también
Procedimientos almacenados del sistema (Transact-SQL)
Procedimientos almacenados del motor de base de datos (Transact-SQL)
Especificar el comportamiento de parametrización de consultas por medio de guías de plan
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de