如何在select语句中调用表值函数?

时间:2014-11-28 05:49:35

标签: sql asp.net

我创建了表值函数。 我这样打电话

select * from dbo.fun_sample(1)

工作正常。我有一张名为Emp的表

Table Emp

Id Name Lname
1  Rani Kale

我的选择声明就像这样

Select id,Name,Lname from Emp

通过将id的值传递给function,我想要获取表(有2列)。但是没有工作

Select id,Name,Lname,(select * from dbo.fun_sample(1)) from Emp

2 个答案:

答案 0 :(得分:5)

使用CROSS APPLY

Select e.id,e.Name,e.Lname from Emp e
CROSS APPLY dbo.fun_sample(1)

答案 1 :(得分:1)

我不确定UDF的架构是什么样的,但是这样的事情应该指向正确的方向。

SELECT *
FROM Emp
    CROSS APPLY dbo.fun_sample(1)

尽管将1替换为表中的某些列确实更有意义。除此之外,我并不确定我理解你所寻找的东西,而且我还需要更多的信息。

最终,您最初提到的方法是尝试在单个列中存储多个列(以及行)。这在TSQL中是不可能的。此处使用的CROSS APPLY可以比作调用INNER JOIN,除非联接针对每行计算的数据。

如果您的1是故意的,则使用INNER JOIN即可。

SELECT *
FROM Emp
    INNER JOIN dbo.fun_sample(1) udf ON Emp.[column1] = udf.[column2]

同样,我不能在没有架构或UDF的情况下给出一个有效的例子。

相关问题