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英寸。重读这个问题后,我可以看到你实际上说这是一个表函数。重读这个问题后,我可以看到你实际上说这是一个表函数。