Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server-
Retourneert de geparameteriseerde vorm van een query. De resultaten die zijn geretourneerd, bootsen de geparameteriseerde vorm van een query na die het resultaat is van geforceerde parameterisatie.
sp_get_query_template
wordt voornamelijk gebruikt wanneer u TEMPLATE
planhandleidingen maakt.
Transact-SQL syntaxisconventies
Syntaxis
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Argumenten
Belangrijk
Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.
[ @querytext = ] N'querytekst'
De query waarvoor de geparameteriseerde versie moet worden gegenereerd.
@querytext is nvarchar(max)en moet tussen enkele aanhalingstekens staan en worden voorafgegaan door de N
Unicode-aanduiding.
@templatetext
Een UITVOERparameter van het type nvarchar(max), opgegeven zoals aangegeven, om de geparameteriseerde vorm van @querytext te ontvangen als letterlijke tekenreeks.
@parameters
Een uitvoerparameter van het type nvarchar(max), opgegeven zoals aangegeven, om een letterlijke tekenreeks te ontvangen van de parameternamen en gegevenstypen die in @templatetextworden geparameteriseerd.
Opmerkingen
sp_get_query_template
retourneert een fout wanneer het volgende optreedt:
- Er worden geen constante letterlijke waarden in @querytextgeparameteraliseerd.
-
@querytext is
NULL
, geen Unicode-tekenreeks, syntactisch ongeldig of kan niet worden gecompileerd.
Als sp_get_query_template
een fout retourneert, worden de waarden van de @templatetext en @parameters uitvoerparameters niet gewijzigd.
Machtigingen
Vereist lidmaatschap van de openbare databaserol.
Voorbeelden
In het volgende voorbeeld wordt de geparameteriseerde vorm van een query geretourneerd die twee constante letterlijke waarden bevat.
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;
Dit zijn de geparameteriseerde resultaten van de parameter @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
De eerste letterlijke constante, 2
, wordt geconverteerd naar een parameter. De tweede letterlijke waarde, 400
, wordt niet geconverteerd omdat deze zich in een HAVING
-component bevindt. De resultaten die worden geretourneerd door sp_get_query_template
de geparameteriseerde vorm van een query nabootsen wanneer de optie PARAMETERIZATION
van ALTER DATABASE
is ingesteld op FORCED
.
Dit zijn de geparameteriseerde resultaten van de parameter @my_parameters OUTPUT
:
@0 int
De volgorde en naamgeving van parameters in de uitvoer van sp_get_query_template
kunnen veranderen tussen quick-fix engineering, servicepack en versie-upgrades van SQL Server. Upgrades kunnen er ook voor zorgen dat een andere set constante letterlijke waarden wordt geparameteriseerd voor dezelfde query en dat er verschillende afstand wordt toegepast in de resultaten van beide uitvoerparameters.