Выполнение определяемых пользователем функций

Применимо к: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