SQL结果的列值为结果集中需要执行返回的UDF名称

Column value of an SQL result is the name of a UDF that needs to be executed and returned in the result set

我想查询我的数据库和return一个table。

TblContainers

ID UID ContainerType Size UDF
1 XXX Chest HUGE udf_GetChestCount
2 YYY Tube SMALL udf_GetTubeCount
3 XXX Box TINY udf_GetBoxCount

我想要的结果集应该是这样的:

ID ContainerType Size Container COUNT
1 Chest HUGE 13 (count obtained by calling udf_GetChestCount)
3 Box TINY 11 (count obtained by calling udf_GetBoxCount)

每一行都会有自己的 UDF 来调用以获得容器计数。 我不确定如何做最后一部分。

我正在尝试执行以下操作(@uid = 'XXX ')

SELECT ID, ContainerType, Size, (EXEC(UDF)(@uid) AS [ContainerCount]
FROM TblContainers WHERE UID=@uid

但这对我不起作用。我将如何构建一个 return 我需要的查询?

我最终使用了 CASE 语句,并按照 Peter Mith 和 Stu 的建议直接调用函数。谢谢大家

CREATE FUNCTION [dbo].[udf_GetContainerCounts](@uid VARCHAR(30))    
    DECLARE @v_ID numeric;

    SET @v_UID = 'XXX'; 
    SELECT ID, ContainerType, Size, UID,
    CASE
       WHEN ContainerType = 'CHEST' THEN (call UDF)
       WHEN ContainerType = 'TUBE' THEN (call UDF)
       WHEN ContainerType = 'BOX' THEN (call UDF)               
       ELSE 0
    END AS [ContainerCount]
    FROM TBLContainers;