我有一段查询+计算的存储过程,暂时没有写Where条件。
现在要根据参数@公司ID,@部门ID,加入条件。
(如果@公司ID不为空,不会0,不会-1, 那么where 公司ID=@公司ID,否者 where 1=1 )
(如果@部门ID不为空,不会0,不会-1, 那么where 部门ID=@部门ID,否者 where 1=1 )
------解决思路----------------------
条件判断
declare @Where VARCHAR(50)
if(@公司ID is not null and @公司ID<>0 and @公司ID<>-1)
begin
set @Where ='where 公司ID=cast(@公司ID as varchar)'
end
else
begin
set @Where='where 1=1 '
end
---下面的同上
(如果@部门ID不为空,不会0,不会-1, 那么where 部门ID=@部门ID,否者 where 1=1 )
------解决思路----------------------
DECLARE @Sql NVARCHAR(max),@Andwhere NVARCHAR(max)=''
IF @部门ID IS NOT NULL AND @部门ID NOT IN(0,1)
SET @Andwhere=@Andwhere+' AND 部门ID=@部门ID'
ELSE IF @公司ID IS NOT NULL AND @公司ID NOT IN(0,1)
SET @Andwhere=@Andwhere+' AND 公司ID=@公司ID'
SET @Sql=' SELECT * FROM 表 where 1=1 '+@Andwhere
EXEC sys.sp_executesql @Sql,
N'@部门ID int,@公司ID int'
,@部门ID,@公司ID