多值参数中的 NULL 值

NULL values in multivalue parameter

下面的这个存储过程填充了我的 Projectphase 参数。因此,如您所见,用户首先必须 select @PurchaseOrder,然后这将填充项目阶段参数。

CREATE PROCEDURE [dbo].[USP_GetProjectPhase] 
     @PurchaseOrder INT
AS
    SELECT       
        pp.ProjectPhaseID, pp.Phase  
    FROM        
        ProjectPhase pp
    WHERE       
        @PurchaseOrder = pp.PurchaseOrderId

现在当用户 select 的 PurchaseOrder 确实有 Projectphases 时,一切顺利。问题出在没有 ProjectPhase 的采购订单中。

报告中显示的用于我的数据集的查询在 WHERE 子句中包含以下行。这是一个多值参数,因为用户需要能够 select 多个项目阶段。

WHERE 
    reg.ProjectPhaseId IN (SELECT Value 
                           FROM fnLocal_CmnParseList(@Phase,','))

我试过 UNIONS 和 NULL,NULL。我已经尝试过使用 ISNULL 的东西,但是当 @ProjectPhase 为 NULL 时,我似乎无法执行查询。

如果能提供一些帮助,我将不胜感激,因为我已经为此苦思冥想了太久。谢谢

终于找到答案了:

[dbo].[USP_GetProjectPhase] @PurchaseOrder INT
AS

SELECT      -1 AS 'ProjectPhaseID'
            ,'No Filter' AS 'Phase'
UNION
SELECT       pp.ProjectPhaseID
            ,pp.Phase  

FROM        ProjectPhase pp
WHERE       @PurchaseOrder = pp.PurchaseOrderId 

在我的查询中,我将 WHERE 子句更改为:

WHERE (reg.ProjectPhaseId IN (SELECT Value FROM fnLocal_CmnParseList(@Phase,',')) OR @Phase = '-1')