gpt4 book ai didi

sql - 将表作为参数传递到 sql server UDF

转载 作者:行者123 更新时间:2023-12-01 18:18:30 25 4
gpt4 key购买 nike

我想将一个表作为参数传递到缩放器 UDF 中。

我还希望将参数限制为只有一列的表。 (可选)

这可能吗?

编辑

我不想传递表名称,我想传递数据表(我认为作为引用)

编辑

我希望我的 Scaler UDF 基本上采用一个值表并返回一个 CSV 行列表。

IE

col1  
"My First Value"
"My Second Value"
...
"My nth Value"

会返回

"My First Value, My Second Value,... My nth Value"

不过,我想对表进行一些过滤,IE 确保没有空值并确保没有重复项。我期待的是以下内容:

SELECT dbo.MyFunction(SELECT DISTINCT myDate FROM myTable WHERE myDate IS NOT NULL)

最佳答案

您可以,但是没有任何 table 。来自文档:

For Transact-SQL functions, all datatypes, including CLR user-definedtypes and user-defined table types,are allowed except the timestamp datatype.

您可以使用user-defined table types .

用户定义的表类型示例:

CREATE TYPE TableType 
AS TABLE (LocationName VARCHAR(50))
GO

DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable

因此,您可以定义表类型,例如 TableType 并定义采用该类型参数的函数。示例函数:

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

该参数必须是只读的。以及用法示例:

DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable

SELECT dbo.Example(@myTable)

根据您想要实现的目标,您可以修改此代码。

编辑:如果表中有数据,您可以创建一个变量:

DECLARE @myTable TableType

并将数据从表中获取到变量

INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table

关于sql - 将表作为参数传递到 sql server UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1609115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com