sp_get_query_template

Devuelve la forma con parámetros de una consulta. Los resultados devueltos simulan la forma con parámetros de la consulta resultante cuando se utiliza la parametrización forzada. sp_get_query_template se utiliza principalmente al crear guías de plan TEMPLATE.

Icono de vínculo a temasConvenciones 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 precedida por el especificador Unicode N. N'query_text' es el valor asignado al parámetro @querytext. Es de tipo nvarchar(max).
  • @templatetext
    Es un parámetro de salida de tipo nvarchar(max), suministrado como se indica, para recibir la forma con parámetros de query_text como literal de cadena.
  • @parameters
    Es un parámetro de salida de tipo nvarchar(max), suministrado como se indica, para recibir un literal de cadena de los nombres de parámetros y tipos de datos con parámetros en @templatetext.

Notas

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 es una cadena Unicode, no es válido sintácticamente o no se puede compilar.

Si sp_get_query_template devuelve un error, no modifica los valores de los parámetros de salida @templatetext y @parameters.

Permisos

Debe pertenecer a la función de la base de datos public.

Ejemplos

El ejemplo siguiente devuelve la forma con parámetros de una consulta que contiene dos valores literales constantes.

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;

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. Para obtener información sobre qué variables se parametrizan en estas condiciones, vea Parametrizaciones forzadas.

Estos son los resultados con parámetros del parámetro @my_parameters``OUTPUT:

@0 int

[!NOTA] El orden y el nombre de los parámetros en la salida de sp_get_query_template puede variar en la ingeniería de corrección rápida, el Service Pack y las actualizaciones de versión 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 apliquen diferentes espacios a los resultados de ambos parámetros de salida.

Vea también

Referencia

Procedimientos almacenados del sistema (Transact-SQL)
Procedimientos almacenados del motor de base de datos (Transact-SQL)

Otros recursos

Especificar el comportamiento de parametrización de consultas por medio de guías de plan
Diseñar guías de plan para consultas con parámetros

Ayuda e información

Obtener ayuda sobre SQL Server 2005