Выполнение определяемых пользователем функций
Область применения: SQL Server База данных SQL Azure
Выполните определяемую пользователем функцию с помощью Transact-SQL.
Скалярные функции должны вызываться по крайней мере с помощью двух частей имени функции (<schema>.<function>
). Дополнительные сведения см. в статье CREATE FUNCTION (Transact-SQL).
Ограничения
В Transact-SQL параметры можно предоставить либо с помощью <value>
, либо с помощью @parameter_name = <value>
. Параметр не является частью транзакции. Таким образом, если параметр изменяется в транзакции, которая позже откатывается, значение параметра не возвращается к предыдущему значению. Возвращаемым вызывающему значением всегда является то значение, которое существует на момент выхода из модуля.
Разрешения
Разрешения не требуются для выполнения инструкции EXECUTE . Однако разрешения необходимы для защищаемых объектов, на которые EXECUTE
ссылается строка. Например, если строка содержит инструкцию INSERT, вызывающий оператор инструкции EXECUTE
должен иметь INSERT
разрешение на целевую таблицу. Разрешения проверяются при обнаружении инструкции времени EXECUTE
, даже если EXECUTE
инструкция включена в модуль. Дополнительные сведения см. в разделе EXECUTE.
Использование Transact-SQL
В этом примере используется скалярная функция ufnGetSalesOrderStatusText
, которая доступна в большинстве выпусков AdventureWorks2022
. Функция предназначена для возврата текстового значения для состояния продаж из заданного целого числа. Изменяйте пример путем передачи целых чисел 1–7 параметру @Status
.
USE [AdventureWorks2022]
GO
-- Declare a variable to return the results of the function.
DECLARE @ret NVARCHAR(15);
-- Execute the function while passing a value to the @status parameter
EXEC @ret = dbo.ufnGetSalesOrderStatusText @Status = 5;
-- View the returned value.
-- The Execute and Select statements must be executed at the same time.
SELECT N'Order Status: ' + @ret;
Вот результат.
Order Status: Shipped