0

我有一个带有 ID 的简单表:

ObjectId
----------
100
101
102

我想像这样多次执行函数 fn_GetStuff(Id) :

fn_GetStuff(100)
fn_GetStuff(101)
fn_GetStuff(102)

是否可以在不使用循环的情况下做到这一点?

我试过这个它不起作用:

SELECT *
FROM myTable
INNER JOIN fn_GetStuff(myTable.ObjectId)
4

3 回答 3

5

OP 正在使用它看起来像的内联表值函数,因此他们需要一个CROSS APPLY...

Select  *
From    myTable mt
Cross   Apply schema.fn_GetStuff(mt.ObjectID) f
于 2013-03-20T15:32:46.743 回答
1

假设你的函数是一个标量值函数,你可以这样做:

select fn_GetStuff(Objectid)
from myTable

如果您的函数是表值的,那么您将需要使用cross apply.

于 2013-03-20T15:31:54.540 回答
0

您不需要加入,因为没有另一张桌子。你应该可以这样做:

SELECT fn_GetSTuff(t.ObjectId)
FROM myTable t
于 2013-03-20T15:32:05.497 回答