多值参数中的 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')
下面的这个存储过程填充了我的 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')