SQL 服务器用户定义函数 returns table -- 不能从 select 查询中调用它

SQL Server user defined function returns table -- cannot call it from select query

我无法使用这种类型的 select 查询(伪代码)。对于给定的 'UID_VEHICLE',UDF returns 一个 table 在单行中有 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

将行值从查询传递到 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;