【问题标题】:pass parameter in table valued function using select statement使用 select 语句在表值函数中传递参数
【发布时间】: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 的动态值一一传递。

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql sql-function


    【解决方案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
    

    【讨论】:

    • 感谢它为我工作。我还有一些困难,但我将它们作为一个单独的问题发布。
    • 搜索了几个小时后(主要是错误的关键字可能是),我来到了这个问题。它拯救了我的一天。谢谢
    • 这一项做得很好,我不会经常使用交叉应用,所以我总是要去查一下:)
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多