将表变量作为参数传递给表值函数

Posted

技术标签:

【中文标题】将表变量作为参数传递给表值函数【英文标题】:Pass a table variable as a parameter to a table-valued function 【发布时间】:2014-07-02 21:03:07 【问题描述】:

是否可以将表变量作为参数传递给 T-Sql 表值函数?我想做类似以下的事情(仅限伪代码):

SELECT FieldValue FROM udf_SplitString(SELECT EmpName FROM Employees)

其中 udf_SplitString 是一个表值函数。作为结果,我希望从Employees 表中获得一个带有EmpName 列的表,但将udf_SplitString 应用于每个EmpName。我不想使用表值参数,因为我必须创建一个 UDF 表类型,而这只是我正在做的一次性事情。

我使用的是 SQL Server 2008。

【问题讨论】:

udf_SplitString 现在的输入是什么? 为什么在选择行而不是从行中没有该功能? ooo 编辑...D Stanley = 速度很快,打败了我 你能举一个预期输出的例子吗?我认为名称上的 SplitString 通常会给出 2 行,而不是两列。因此,这个请求有点模棱两可。 【参考方案1】:

我假设udf_SplitString 接受一个值并返回一个表。如果是这样,那么我认为你想要:

SELECT ss.*
FROM Employees e
CROSS APPLY udf_SplitString(e.EmpName) AS ss

【讨论】:

谢谢你,D 斯坦利!正是我想要的。

以上是关于将表变量作为参数传递给表值函数的主要内容,如果未能解决你的问题,请参考以下文章

如何从.net代码将表值参数传递给存储过程

将表值参数传递给存储过程

使用 PetaPoco 将表值参数传递给存储过程

将表值参数传递给具有不同字段数的存储过程

将表作为参数传递给函数

如何使用 C# 和 SQL 将表值参数传递给用户定义的数据表