sp_get_query_template (Transact-SQL)
Gilt für: SQL Server
Gibt das parametrisierte Format einer Abfrage zurück. Die zurückgegebenen Ergebnisse imitieren das parametrisierte Format einer Abfrage, das aus der Verwendung von erzwungener Parametrisierung resultiert. sp_get_query_template
wird in erster Linie verwendet, wenn Sie Planhandbücher erstellen TEMPLATE
.
Transact-SQL-Syntaxkonventionen
Syntax
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Argumente
[ @querytext = ] N'querytext'
Die Abfrage, für die die parametrisierte Version generiert werden soll. @querytext ist nvarchar(max) und muss in einfache Anführungszeichen eingeschlossen und dem N
Unicode-Bezeichner vorangestellt werden.
@templatetext
Ein OUTPUT-Parameter vom Typ nvarchar(max), angegeben, um die parametrisierte Form von @querytext als Zeichenfolgenliteral zu empfangen.
@parameters
Ein Ausgabeparameter vom Typ nvarchar(max), der wie angegeben angegeben bereitgestellt wird, um ein Zeichenfolgenliteral der Parameternamen und Datentypen zu empfangen, die in @templatetext parametrisiert sind.
Hinweise
sp_get_query_template
gibt einen Fehler zurück, wenn Folgendes auftritt:
- In @querytext werden keine konstanten Literalwerte parametrisiert.
- @querytext ist
NULL
, keine Unicode-Zeichenfolge, syntaktisch ungültig oder kann nicht kompiliert werden.
Wenn sp_get_query_template
ein Fehler zurückgegeben wird, werden die Werte der @templatetext - und @parameters Ausgabeparameter nicht geändert.
Berechtigungen
Erfordert die Mitgliedschaft in der public -Datenbankrolle.
Beispiele
Das folgende Beispiel gibt das parametrisierte Format einer Abfrage zurück, die zwei konstante literale Werte enthält.
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;
Im Folgenden sehen Sie die parametrisierten Werte des @my_templatetext OUTPUT
-Parameters:
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
Das erste Konstanteliteral wird 2
in einen Parameter konvertiert. Das zweite Literal wird nicht konvertiert, 400
da es sich innerhalb einer HAVING
Klausel befindet. Die ergebnisse, die von sp_get_query_template
der parametrisierten Form einer Abfrage zurückgegeben werden, wenn die PARAMETERIZATION
Option ALTER DATABASE
auf FORCED
".
Im Folgenden sehen Sie die parametrisierten Werte des @my_parameters OUTPUT
-Parameters:
@0 int
Die Reihenfolge und Benennung von Parametern in der Ausgabe sp_get_query_template
von kann sich zwischen Quick Fix Engineering, Service Pack und Versionsupgrades von SQL Server ändern. Upgrades können auch bewirken, dass eine andere Gruppe mit konstanten Literalen für dieselbe Abfrage parametrisiert und unterschiedliche Abstände auf die Ergebnisse beider Ausgabeparameter angewendet werden.