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 TEMPLATE.
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 conforme indicado, para receber um literal de cadeia de caracteres dos nomes de parâmetros e tipos de dados que foram parametrizados no @templatetext.
Comentários
sp_get_query_template retorna um erro quando ocorre o seguinte:
Ele não parametriza nenhum valor literal constante em query_text.
query_text é NULL, não uma cadeia de caracteres Unicode, sintaticamente inválida ou não pode ser compilada.
Se sp_get_query_template retornar um erro, ele não modificará os valores dos parâmetros e @parameters de @templatetext saída.
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 dos parâmetros na saída do sp_get_query_template podem ser alteradas entre engenharia de correção rápida, service pack e atualizações de versão do 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.
Confira 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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários