将表作为参数传递给 SQL Server UDF
可以将表作为参数传递给标量 UDF SQL Server,利用用户定义的表类型。
创建用户定义的表类型表类型
定义表类型来表示表参数的结构。例如:
CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50))
定义 UDF
创建一个采用用户定义表类型参数的标量 UDF。该参数必须声明为 READONLY。例如:
CREATE FUNCTION Example(@TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN DECLARE @name VARCHAR(50) SELECT TOP 1 @name = LocationName FROM @TableName RETURN @name END
传递表变量
在 SQL Server 中,您可以创建用户定义表类型的变量并用来自以下位置的数据填充它:一张桌子。例如:
DECLARE @myTable TableType INSERT INTO @myTable(LocationName) VALUES('aaa')
用法
要将 UDF 与表变量一起使用,请将变量作为参数传递。例如:
SELECT dbo.Example(@myTable)
处理重复项和 NULL
为了确保表中没有重复项和 NULL,您可以在 UDF 中包含相关检查:
CREATE FUNCTION Example(@TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN DECLARE @name VARCHAR(50) SELECT TOP 1 @name = LocationName FROM @TableName WHERE LocationName IS NOT NULL AND LocationName NOT IN (SELECT LocationName FROM @TableName WHERE LocationName IS NULL OR LocationName = @name) RETURN @name END
以上是如何将表作为参数传递给 SQL Server 标量 UDF?的详细内容。更多信息请关注PHP中文网其他相关文章!