Tsql 连接表函数的存储过程?

Tsql 连接表函数的存储过程?,tsql,stored-procedures,Tsql,Stored Procedures,我有一个存储过程,需要对返回表的函数进行内部联接。试着这样称呼它: INNER JOIN [dbo].[udf_GetBillingInfo(@QuoteID)] billInfo ON quotes.QuoteID = billInfo.QuoteID 给出一个错误无效的对象名dbo.udf_GetBillingInfo@QuoteID 考虑到我的需求,我不认为我可以把函数变成一个视图,因为它有一点点逻辑。我如何加入结果?我是否必须将函数结果赋给一个变量或类似性质的东西?您能将函数写成表函数

我有一个存储过程,需要对返回表的函数进行内部联接。试着这样称呼它:

INNER JOIN [dbo].[udf_GetBillingInfo(@QuoteID)] billInfo ON quotes.QuoteID = billInfo.QuoteID
给出一个错误无效的对象名dbo.udf_GetBillingInfo@QuoteID


考虑到我的需求,我不认为我可以把函数变成一个视图,因为它有一点点逻辑。我如何加入结果?我是否必须将函数结果赋给一个变量或类似性质的东西?

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


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


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

将其更改为:

[dbo].udf_GetBillingInfo(@QuoteID)

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

将其更改为:

[dbo].udf_GetBillingInfo(@QuoteID)

下面是一个加入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

下面是一个加入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

你应该可以加入TVF。您确定架构和tvf名称正确吗?您应该能够加入tvf。你确定模式和tvf名称是正确的吗?哈,就是这样;我忘了[]表示一个列名,所以它认为函数名和参数是一个列。失败或[dbo].[udf_GetBillingInfo]@QuoteIDD'oh!真不敢相信我错过了那一次+哈,就是这样;我忘了[]表示一个列名,所以它认为函数名和参数是一个列。失败或[dbo].[udf_GetBillingInfo]@QuoteIDD'oh!真不敢相信我错过了那一次+1英寸。重读这个问题后,我可以看到你实际上说这是一个表函数。重读这个问题后,我可以看到你实际上说这是一个表函数。