存储过程加入表函数?

时间:2011-08-11 14:43:11

标签: tsql stored-procedures

我有一个存储过程需要在返回表的函数上进行内连接。试着像这样打电话:

INNER JOIN [dbo].[udf_GetBillingInfo(@QuoteID)] billInfo ON quotes.QuoteID = billInfo.QuoteID

发出错误invalid object name dbo.udf_GetBillingInfo(@QuoteID)

根据我的要求,我认为我不能将函数放入视图中,因为它有一点点逻辑。我如何加入结果?我是否必须将函数结果赋给变量或那种性质的东西?

3 个答案:

答案 0 :(得分:5)

您的问题是方括号 - [dbo].[udf_GetBillingInfo(@QuoteID)] - 它们引用内部的任何内容作为函数名称。

将其更改为:

[dbo].udf_GetBillingInfo(@QuoteID)

答案 1 :(得分:0)

这是加入TVF的一个(愚蠢的)例子,希望它有所帮助!

CREATE FUNCTION MyFunc ( @p1 int ) RETURNS TABLE 
AS
RETURN 
(
        SELECT @p1 AS a 
        union 
        SELECT @p1 +1 AS a 
        union 
        SELECT @p1 +2 AS a
)
GO

declare @t table (c int) 
insert @t (c) values(1),(2),(3),(4)

select * 
from @t t 
left join dbo.MyFunc(1) f on  t.c = f.a

答案 2 :(得分:-1)

你能把你的功能写成表函数吗?我想你可以在这里找到答案

tsql returning a table from a function or store procedure