Поделиться через


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

Область применения: 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