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
NULL
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 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.