正确使用表值函数

时间:2012-09-14 17:24:20

标签: sql-server user-defined-functions

我有一个包含单列my_ids的表id。接下来,我有一个表值函数fn_getMatches(id)。我想要的是迭代表my_ids和每个id调用函数fn_getMatches(id)并将所有结果聚合在一个表中。没有显式循环我该怎么做?

我试过了:

select *
from my_ids ids
     full outer join fn_getMatches(ids.id) on 1=2
where ids.id is null

但它返回:

  

Msg 4104,Level 16,State 1,Line 11
  无法绑定多部分标识符“ids.id”。

2 个答案:

答案 0 :(得分:3)

不知道该功能的作用,或者您期望的结果,也许可以尝试:

select * -- name your columns!
from dbo.my_ids AS ids -- use schema prefix!
cross apply dbo.fn_getMatches(ids.id); -- use schema prefix!

从初次尝试中删除了WHERE条款和ON条件。

答案 1 :(得分:1)

SELECT  *
        FROM my_ids ids
        CROSS APPLY fn_getMatches(ids.id)

我并不完全获取您的WHERE子句,因为它似乎意味着您事先知道ids.id的值,而且始终是NULL