多次执行函数而不使用循环

时间:2013-03-20 15:30:08

标签: sql sql-server

我有一个带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)

3 个答案:

答案 0 :(得分:5)

OP正在使用内联表值函数,它看起来像是需要CROSS APPLY ......

Select  *
From    myTable mt
Cross   Apply schema.fn_GetStuff(mt.ObjectID) f

答案 1 :(得分:1)

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

select fn_GetStuff(Objectid)
from myTable

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

答案 2 :(得分:0)

您不需要加入,因为没有其他表格。你应该可以这样做:

SELECT fn_GetSTuff(t.ObjectId)
FROM myTable t