我在执行存储过程时使用WHERE
子句中的函数dbo.Split
。当输入参数为NULL
时,我不想执行此功能。如何处理存储过程中的NULL参数
E.g.
Create Procedure [dbo].[HRMS_RPT_CategoryWiseSeniorityList]
@fk_BranchRegion_ID bigint = null,
@pk_BranchType_ID nvarchar(100) = null
AS
BEGIN
Select distinct SR.fk_branchType_ID
from HRMS_Employee_ServiceRecord SR (nolock)
Inner Join HRMS_Mst_Branch B (nolock) On B.pk_Branch_ID = SR.fk_Branch_ID
Where
B.fk_BranchRegion_ID = IsNull(@fk_BranchRegion_ID,B.fk_BranchRegion_ID) --Region Condition
AND SR.fk_BranchType_ID in (SELECT * from dbo.Split(@pk_BranchType_ID,','))
END
我用下面的SQL忽略过滤器上SR.fk_BranchType_ID
时@pk_BranchType_ID
是NULL
:
SR.fk_BranchType_ID = IsNull(@pk_BranchType_ID, SR.fk_BranchType_ID)
我想要做的@pk_BranchType_ID
类似的东西。如果我像@pk_BranchType_ID
那样使用ISNULL
,则不会返回行。当它是NULL
。
当@pk_BranchType_ID
为NULL
时,如何让我的存储过程忽略SR.fk_BranchType_ID
上的过滤器?
遗憾地说,但这个问题的状态,我想回行,即使参数是否为NULL,请告诉我,如果我能在使用dbo.Split –
检查参数为空或不@ user12804 92我刚刚根据您更新的问题更新了我的答案。这应该适合你。 –
正是我期望的...非常感谢! –