sp_get_query_template (Transact-SQL)

Aplica-se a:SQL Server

Retorna o formulário com parâmetros de uma consulta. Os resultados retornados imitam o formulário parametrizado de uma consulta que é o resultado do uso de parametrização forçada. sp_get_query_template é usado principalmente quando você cria guias de plano DE MODELO.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

'query_text'
É a consulta para a qual a versão com parâmetros será gerada. 'query_text' deve ser colocado entre aspas simples e precedido pelo especificador N Unicode. N'query_text' é o valor atribuído ao @querytext parâmetro . Isso é do tipo nvarchar(max).

@templatetext
É um parâmetro de saída do tipo nvarchar(max), fornecido conforme indicado, para receber a forma parametrizada de query_text como um literal de cadeia de caracteres.

@parameters
É um parâmetro de saída do tipo nvarchar(max),fornecido como indicado, para receber um literal de cadeia de caracteres dos nomes de parâmetro e tipos de dados que foram parametrizados em @templatetext.

Comentários

sp_get_query_template retorna um erro quando ocorre o seguinte:

  • Ele não parametriza valores literais constantes em query_text.

  • query_text é NULL, não uma cadeia de caracteres Unicode, sintaticamente não válida ou não pode ser compilada.

Se sp_get_query_template retornar um erro, ele não modificará os valores dos @templatetext parâmetros de saída e @parameters .

Permissões

Requer associação na função pública do banco de dados.

Exemplos

O exemplo a seguir retorna o formulário com parâmetros de uma consulta que contém dois valores literais 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;  

Estes são os resultados parametrizados do 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 o primeiro literal constante, 2, é convertido em um parâmetro. O segundo literal, 400, não é convertido porque está em uma cláusula HAVING. Os resultados retornados por sp_get_query_template imitam o formulário com parâmetros de uma consulta quando a opção PARAMETERIZATION de ALTER DATABASE estiver definida como FORCED.

Estes são os resultados parametrizados do parâmetro @my_parameters OUTPUT:

@0 int  

Observação

A ordem e a nomenclatura de parâmetros na saída de sp_get_query_template podem ser alterados entre atualizações rápidas de engenharia, service pack e versão de SQL Server. As atualizações também podem fazer com que um conjunto diferente de literais constantes seja parametrizado para a mesma consulta e que um espaçamento diferente seja aplicado nos resultados de ambos os parâmetros de saída.

Consulte Também

Procedimentos armazenados do sistema (Transact-SQL)
Procedimentos armazenados do Mecanismo de Banco de Dados (Transact-SQL)
Especificar comportamento de parametrização de consulta usando guias de plano