使用 select 语句在表值函数中传递参数
Posted
技术标签:
【中文标题】使用 select 语句在表值函数中传递参数【英文标题】:pass parameter in table valued function using select statement 【发布时间】:2013-11-02 19:58:15 【问题描述】:我创建了一个表值返回函数,它返回一个表。这是我的函数的调用如下
SELECT * FROM dbo.[StateFixedTaxesCalculation](3020,16,1,1006)
它对我来说工作正常,现在我想在选择语句中使用这个函数调用,所以我可以动态传递16
,它基本上是employeeId
。
所以我决定使用内部联接与该函数返回的表。像这样
SELECT * FROM Employee as E
INNER JOIN dbo.[StateFixedTaxesCalculation](3020,16,1,1006) as TC ON TC.EmployeeId=E.EmployeeId
但是现在我如何将16
作为所有employeeId
的动态值一一传递。
【问题讨论】:
【参考方案1】:使用outer/cross apply
:
select *
from Employee as E
cross apply dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TC
如果您仍然需要通过TC.EmployeeId = E.EmployeeId
进行过滤,您可以使用子查询来做到这一点:
select *
from Employee as E
cross apply (
select TT.*
from dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TT
where TT.EmployeeId = E.EmployeeId
) as TC
【讨论】:
感谢它为我工作。我还有一些困难,但我将它们作为一个单独的问题发布。 搜索了几个小时后(主要是错误的关键字可能是),我来到了这个问题。它拯救了我的一天。谢谢 这一项做得很好,我不会经常使用交叉应用,所以我总是要去查一下:)以上是关于使用 select 语句在表值函数中传递参数的主要内容,如果未能解决你的问题,请参考以下文章
通过在 SQL Server 2000 中传递变量参数来加入表值函数
SqlDbType.Structured 在 NHibernate 中传递表值参数以选择不带:param?