执行用户定义函数

适用于: SQL Server Azure SQL 数据库

使用 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