2013-03-20 5 views
0

У меня есть простая таблица с идентификаторами:Выполнить функцию несколько раз без использования цикла

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) 
+1

Вы должны поместить схему в перед функцией. Это требование. Ниже приведены два типа ответов: один для скалярных функций, другой - для встроенных табличных функций. Один из них прав, но обязательно добавьте схему во всех случаях. –

+2

Является ли это табличной функцией? –

+0

Да его табличная функция. – Arizona1911

ответ

5

OP использует в линии таблицы функция это выглядит так, что потребуется CROSS APPLY ...

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

Это работает спасибо! – Arizona1911

1

Если предположить, что функция является скалярная функция, вы можете просто сделать:

select fn_GetStuff(Objectid) 
from myTable 

Если функция таблица оценивается, то вам нужно будет использовать cross apply.

0

Вам не нужно присоединяться, потому что нет другой таблицы. Вы должны быть в порядке, чтобы сделать это:

SELECT fn_GetSTuff(t.ObjectId) 
FROM myTable t