Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Zwraca sparametryzowaną formę zapytania. Wyniki zwrócone naśladują sparametryzowaną formę zapytania, które wynika z użycia wymuszonej parametryzacji.
sp_get_query_template
jest używana głównie podczas tworzenia przewodników planu TEMPLATE
.
Transact-SQL konwencje składni
Składnia
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Argumenty
Ważny
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
[ @querytext = ] N'querytext'
Zapytanie, dla którego ma zostać wygenerowana sparametryzowana wersja.
@querytext jest nvarchar(max)i musi być ujęty w pojedynczy cudzysłów i być poprzedzony specyfikatorem N
Unicode.
@templatetext
Parametr OUTPUT typu nvarchar(max), podany zgodnie ze wskazaniem, aby otrzymać sparametryzowaną formę @querytext jako literał ciągu.
@parameters
Parametr wyjściowy typu nvarchar(max), podany zgodnie ze wskazaniem, aby otrzymać literał ciągu nazw parametrów i typów danych, które są sparametryzowane w @templatetext.
Uwagi
sp_get_query_template
zwraca błąd, gdy wystąpią następujące elementy:
- Nie parametryzuje żadnych wartości literałów stałych w @querytext.
-
@querytext jest
NULL
, a nie ciąg Unicode, składniowo nieprawidłowy lub nie można go skompilować.
Jeśli sp_get_query_template
zwraca błąd, nie modyfikuje wartości parametrów @templatetext i @parameters wyjściowych.
Uprawnienia
Wymaga członkostwa w roli bazy danych publicznej.
Przykłady
Poniższy przykład zwraca sparametryzowaną formę zapytania zawierającego dwie stałe wartości literału.
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;
Poniżej przedstawiono sparametryzowane wyniki parametru @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
Pierwszy literał stałej, 2
, jest konwertowany na parametr. Drugi literał, 400
, nie jest konwertowany, ponieważ znajduje się wewnątrz klauzuli HAVING
. Wyniki zwrócone przez sp_get_query_template
naśladują sparametryzowaną formę zapytania, gdy opcja PARAMETERIZATION
ALTER DATABASE
jest ustawiona na FORCED
.
Poniżej przedstawiono sparametryzowane wyniki parametru @my_parameters OUTPUT
:
@0 int
Kolejność i nazewnictwo parametrów w danych wyjściowych sp_get_query_template
mogą ulec zmianie między szybkimi poprawkami inżynieryjnymi, dodatkiem Service Pack i uaktualnieniami wersji programu SQL Server. Uaktualnienia mogą również spowodować sparametryzację innego zestawu literałów stałych dla tego samego zapytania i zastosowanie różnych odstępów w wynikach obu parametrów wyjściowych.
Powiązana zawartość
- System procedur składowanych (Transact-SQL)
- procedury składowane aparatu bazy danych (Transact-SQL)
- określanie zachowania parametryzacji zapytań przy użyciu przewodników planu