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 APPLY
或 OUTER 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;
我无法使用这种类型的 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 APPLY
或 OUTER 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;