sp_get_query_template (Transact-SQL)
S’applique à : SQL Server
Retourne la forme paramétrable d'une requête. Les résultats retournés simulent la forme paramétrable d'une requête obtenue à l'aide d'un paramétrage forcé. sp_get_query_template
est principalement utilisé lorsque vous créez TEMPLATE
des repères de plan.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Arguments
[ @querytext = ] N’querytext'
Requête pour laquelle la version paramétrable doit être générée. @querytext est nvarchar(max), et doit être placé entre guillemets simples et être précédé du N
spécificateur Unicode.
@templatetext
Paramètre OUTPUT de type nvarchar(max), fourni comme indiqué, pour recevoir la forme paramétrable de @querytext en tant que littéral de chaîne.
@parameters
Paramètre de sortie de type nvarchar(max), fourni comme indiqué, pour recevoir un littéral de chaîne des noms de paramètres et des types de données paramétrés dans @templatetext.
Notes
sp_get_query_template
retourne une erreur lorsque les éléments suivants se produisent :
- Elle ne paramétre aucune valeur littérale constante dans @querytext.
- @querytext est
NULL
, pas une chaîne Unicode, syntactiquement non valide ou ne peut pas être compilée.
Si sp_get_query_template
elle retourne une erreur, elle ne modifie pas les valeurs des paramètres de @templatetext et @parameters de sortie.
autorisations
Nécessite l’appartenance au rôle de base de données publique .
Exemples
L'exemple suivant retourne la forme paramétrable d'une requête qui contient deux valeurs littérales de constante.
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;
Voici les résultats paramétrés du paramètre @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
Le premier littéral constant, est 2
converti en paramètre. Le deuxième littéral, 400
n’est pas converti, car il se trouve à l’intérieur d’une HAVING
clause. Les résultats retournés par sp_get_query_template
imiter la forme paramétrable d’une requête lorsque l’option PARAMETERIZATION
de ALTER DATABASE
la requête est définie FORCED
sur .
Voici les résultats paramétrés du paramètre @my_parameters OUTPUT
:
@0 int
L’ordre et le nommage des paramètres dans la sortie peuvent sp_get_query_template
changer entre l’ingénierie des correctifs rapides, le service pack et les mises à niveau de version de SQL Server. Les mises à niveau peuvent également provoquer le paramétrage d'un ensemble différent de littéraux de constante pour la même requête et l'application d'un espacement différent dans les résultats de deux paramètres de sortie.