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 beim Erstellen von TEMPLATE-Planhandbüchern verwendet.
Transact-SQL-Syntaxkonventionen
Syntax
sp_get_query_template
[ @querytext = ] N'query_text'
, @templatetext OUTPUT
, @parameters OUTPUT
Argumente
"query_text"
Die Abfrage, für die die parametrisierte Version erzeugt werden soll. "query_text" muss in einfache Anführungszeichen eingeschlossen sein und dem N Unicode-Bezeichner vorangestellt sein. N'query_text' ist der dem Parameter zugewiesene @querytext Wert. Dies ist vom Typ nvarchar(max).
@templatetext
Ist ein Ausgabeparameter vom Typ nvarchar(max), der wie angegeben bereitgestellt wird, um die parametrisierte Form von query_text als Zeichenfolgenliteral zu empfangen.
@parameters
Ist ein Ausgabeparameter vom Typ nvarchar(max), der wie angegeben bereitgestellt wird, um ein Zeichenfolgenliteral der Parameternamen und Datentypen zu empfangen, die in @templatetextparametrisiert wurden.
Bemerkungen
Der Parameter sp_get_query_template gibt in folgenden Situationen einen Fehler zurück:
Es parametrisiert keine konstanten Literalwerte in query_text.
query_text ist NULL, keine Unicode-Zeichenfolge, syntaktisch ungültig oder kann nicht kompiliert werden.
Wenn sp_get_query_template einen Fehler zurückgibt, werden die Werte der Ausgabeparameter und @parameters nicht @templatetext 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
Beachten Sie, dass das erste konstante Literal, 2
, in einen Parameter konvertiert wird. Das zweite Literal, 400
, wird nicht konvertiert, da es sich in einer HAVING
-Klausel befindet. Die von sp_get_query_template zurückgegebenen Ergebnisse imitieren das parametrisierte Format einer Abfrage, wenn die PARAMETERIZATION-Option von ALTER DATABASE auf FORCED festgelegt wird.
Im Folgenden sehen Sie die parametrisierten Werte des @my_parameters OUTPUT
-Parameters:
@0 int
Hinweis
Die Reihenfolge und Benennung von Parametern in der Ausgabe von sp_get_query_template kann sich zwischen Schnellkorrekturen, 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.
Weitere Informationen
Gespeicherte Systemprozeduren (Transact-SQL)
Gespeicherte Prozeduren für die Datenbank-Engine (Transact-SQL)
Angeben des Abfrageparametrisierungsverhaltens mithilfe von Planhinweislisten
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für