Freigeben über


sp_get_query_template

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 hauptsächlich beim Erstellen von TEMPLATE-Planhinweislisten verwendet.

Themenlink (Symbol)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 werden, und ihm muss der Unicode-Bezeichner N vorangestellt werden. N'query_text' ist der Wert, der dem @querytext-Parameter zugeordnet wird. Dies ist ein nvarchar(max)-Typ.
  • @templatetext
    Ein Ausgabeparameter vom Typ nvarchar(max), der wie angegeben bereitgestellt wird, um das parametrisierte Format von query_text als ein Zeichenfolgenliteral zu empfangen.
  • @parameters
    Ein Ausgabeparameter vom Typ nvarchar(max), der wie angegeben bereitgestellt wird, um ein Zeichenfolgenliteral der Parameternamen und Datentypen zu empfangen, die in @templatetext parametrisiert wurden.

Hinweise

Der Parameter sp_get_query_template gibt in folgenden Situationen einen Fehler zurück:

  • Wenn er keine konstanten literalen Werte in query_text parametrisiert.
  • Wenn query_text NULL ist, keine Unicode-Zeichenfolge ist, syntaktisch ungültig ist oder nicht kompiliert werden kann.

Wenn der Parameter sp_get_query_template einen Fehler meldet, ändert er nicht die Werte der @templatetext- und @parameters-Ausgabeparameter.

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 AdventureWorks;
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 sind die parametrisierten Ergebnisse des Parameters @my_templatetext``OUTPUT aufgeführt:

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. Weitere Informationen zu den Variablen, die unter diesen Bedingungen parametrisiert werden, finden Sie unter Erzwungene Parametrisierung.

Im Folgenden werden die parametrisierten Werte des @my_parameters``OUTPUT-Parameters aufgeführt:

@0 int
ms186908.note(de-de,SQL.90).gifHinweis:
Die Reihenfolge und Benennung von Parametern in der Ausgabe von sp_get_query_template kann sich vom einen zum nächsten Quick Fix Engineering, Service Pack und Versionsupdate für SQL Server ändern. Updates 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.

Siehe auch

Verweis

Gespeicherte Systemprozeduren (Transact-SQL)
Gespeicherte Prozeduren für das Datenbankmodul (Transact-SQL)

Andere Ressourcen

Angeben des Abfrageparametrisierungsverhaltens mithilfe von Planhinweislisten
Entwerfen von Planhinweislisten für parametrisierte Abfragen

Hilfe und Informationen

Informationsquellen für SQL Server 2005