当前位置: 代码迷 >> Sql Server >> 存储过程依据@参数,增加where条件
  详细解决方案

存储过程依据@参数,增加where条件

热度:87   发布时间:2016-04-24 09:43:16.0
存储过程根据@参数,增加where条件
我有一段查询+计算的存储过程,暂时没有写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
  相关解决方案