Condividi tramite


sp_get_query_template (Transact-SQL)

Si applica a: SQL Server

Restituisce il formato con parametri di una query. I risultati restituiti sono simili al formato con parametri di una query risultante dall'utilizzo della parametrizzazione forzata. sp_get_query_template viene usato principalmente quando si creano TEMPLATE guide di piano.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @querytext = ] N'querytext'

Query per la quale deve essere generata la versione con parametri. @querytext è nvarchar(max)e deve essere racchiuso tra virgolette singole e preceduto dall'identificatore N Unicode.

@templatetext

Parametro OUTPUT di tipo nvarchar(max), fornito come indicato, per ricevere la forma con parametri di @querytext come valore letterale stringa.

@parameters

Parametro di output di tipo nvarchar(max), fornito come indicato, per ricevere un valore letterale stringa dei nomi dei parametri e dei tipi di dati con parametri in @templatetext.

Osservazioni:

sp_get_query_template restituisce un errore quando si verifica quanto segue:

  • Non parametrizza valori letterali costanti in @querytext.
  • @querytext è , non una NULLstringa Unicode, sintatticamente non valida o non può essere compilata.

Se sp_get_query_template restituisce un errore, non modifica i valori dei parametri di @templatetext e @parameters di output.

Autorizzazioni

Richiede l'appartenenza al ruolo del database pubblico .

Esempi

Nell'esempio seguente viene restituito il formato con parametri di una query contenente due valori letterali costanti.

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;

Di seguito sono riportati i risultati con parametri del parametro @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

Il primo valore letterale costante, 2, viene convertito in un parametro . Il secondo valore letterale, 400, non viene convertito perché si trova all'interno di una HAVING clausola . I risultati restituiti dalla sp_get_query_template forma con parametri di una query quando l'opzione PARAMETERIZATION di ALTER DATABASE è impostata su FORCED.

Di seguito sono riportati i risultati con parametri del parametro @my_parameters OUTPUT.

@0 int

L'ordine e la denominazione dei parametri nell'output di sp_get_query_template possono cambiare tra l'ingegneria di correzione rapida, il Service Pack e gli aggiornamenti della versione di SQL Server. È inoltre possibile che in seguito agli aggiornamenti vengano assegnati parametri a un set di valori letterali costanti diverso per la stessa query e che una spaziatura diversa venga applicata ai risultati in entrambi i parametri di output.