SQL Server用户定义的函数返回表 - 无法从select查询中调用它

时间:2017-04-02 14:57:19

标签: sql-server user-defined-functions

我无法使用这种类型的选择查询(伪代码)。对于给定的“UID_VEHICLE”,UDF在单行中返回一个包含8列的表。当'UID_VEHICLE'作为常数提供时,它可以很好地工作,如3308.但是对于给定的客户,我需要为每辆车提供一行这些功能结果 - 最多返回100行。

SELECT 
    * 
FROM
    [dbo].[fnGetNextDOT_InspectionData](UID_VEHICLE)
WHERE  
    UID_VEHICLE IN (SELECT UID_VEHICLE 
                    FROM tVEHICLES 
                    WHERE UID_CUSTOMER = 88);

欢迎您提出意见和解决方案......谢谢...... John

1 个答案:

答案 0 :(得分:1)

将查询中的行值传递给TVF时,需要使用CROSS APPLYOUTER APPLY(从SQL Server 2005开始):

SELECT   * -- or dot.*, or whatever is desired
FROM     tVEHICLES veh
CROSS APPLY [dbo].[fnGetNextDOT_InspectionData](veh.UID_VEHICLE) dot
WHERE    veh.UID_CUSTOMER = 88;