Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:SQL Server
Возвращает запрос в параметризованной форме. Возвращаемые результаты имитируют параметризованную форму запроса, получаемую в результате принудительной параметризации.
sp_get_query_template используется в основном при создании TEMPLATE руководств по плану.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Аргументы
Важный
Аргументы для расширенных хранимых процедур необходимо ввести в определенном порядке, как описано в разделе Синтаксис. Если параметры введены вне порядка, возникает сообщение об ошибке.
[ @querytext = ] N'querytext'
Запрос, для которого создается параметризованная версия.
@querytext является nvarchar(max) и должен быть заключен в одинарные кавычки и предшествовать N описателям Юникода.
@templatetext
Параметр OUTPUT типа nvarchar(max), предоставленный как указано, для получения параметризованной формы @querytext в виде строкового литерала.
@parameters
Выходной параметр типа nvarchar(max), предоставленный как указано, для получения строкового литерала имен параметров и типов данных, параметризованных в @templatetext.
Замечания
sp_get_query_template возвращает ошибку при возникновении следующей ошибки:
- В @querytext не параметризируются литеральные значения констант.
-
@querytext не является
NULLстрокой Юникода, синтаксически недействительной или не может быть скомпилирована.
Если sp_get_query_template возвращается ошибка, он не изменяет значения @templatetextпараметров.
Разрешения
Требуется членство в роли общедоступной базы данных.
Примеры
В следующем примере выдается параметризованная форма запроса, в котором содержатся два литеральных значения константы.
USE AdventureWorks2022;
GO
DECLARE @my_templatetext AS NVARCHAR (MAX);
DECLARE @my_parameters AS NVARCHAR (MAX);
EXECUTE 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;
Ниже приведены параметризованные результаты в аргументе @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
Первый константный литерал, 2преобразуется в параметр. Второй литерал, не преобразуется, 400так как он находится внутри HAVING предложения. Результаты, возвращаемые имитацией sp_get_query_template параметризованной формы запроса, если PARAMETERIZATIONALTER DATABASE задан параметр .FORCED
Ниже приведены параметризованные результаты в аргументе @my_parameters OUTPUT.
@0 int
Порядок и именование параметров в выходных данных sp_get_query_template может меняться между быстрой настройкой, пакетом обновления и обновлениями версий SQL Server. Обновление версии может также стать причиной получения отличающегося набора параметризуемых констант для того же запроса и изменения формата выдачи результатов для обоих выходных параметров.