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 guide di piano MODELLO.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

'query_text'
Query per la quale la versione con parametri deve essere generata. 'query_text' deve essere racchiuso tra virgolette singole e deve essere preceduto dall'identificatore Unicode N. N'query_text' è il valore assegnato al @querytext parametro . Questo è di tipo nvarchar(max).

@templatetext
Parametro di output di tipo nvarchar(max), fornito come indicato, per ricevere la forma con parametri di query_text 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 se:

  • Non parametrizza alcun valore letterale costante in query_text.

  • query_text è NULL, non una stringa 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 output e @parameters .

Autorizzazioni

È richiesta l'appartenenza al ruolo del database public.

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 parametro. Il secondo valore letterale, 400, non viene convertito perché si trova all'interno di una clausola HAVING. I risultati restituiti da sp_get_query_template sono simili al formato con parametri di una query se l'opzione PARAMETERIZATION dell'istruzione ALTER DATABASE è impostata su FORCED.

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

@0 int  

Nota

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.

Vedi anche

Stored procedure di sistema (Transact-SQL)
Stored procedure del motore di database (Transact-SQL)
Specificare il comportamento di parametrizzazione delle query tramite guide di piano