SQL Server Express存储过程条件检查
我编写了一个存储过程:SQL Server Express存储过程条件检查,sql,sql-server-2008,stored-procedures,Sql,Sql Server 2008,Stored Procedures,我编写了一个存储过程: ALTER PROCEDURE [dbo].[GetBRs_Pager] @PageIndex INT ,@PageSize INT ,@SupId INT ,@RecordCount INT OUTPUT AS BEGIN SET NOCOUNT ON; SELECT ROW_NUMBER() OVER ( ORDER BY [tblBR].[ID] ASC ) AS RowNumber ,[tblBR].[ID] ,[tblB
ALTER PROCEDURE [dbo].[GetBRs_Pager]
@PageIndex INT
,@PageSize INT
,@SupId INT
,@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER()
OVER (
ORDER BY [tblBR].[ID] ASC
) AS RowNumber
,[tblBR].[ID]
,[tblBR].[BRName]
,[tblBR].[SupervisorId]
,[tblSupervisor].[SupervisorName]
,[tblBR].[BRCode]
,[tblBR].[BRMobile]
,[tblBR].[BRTypeId]
,[tblType].[TypeName]
,[tblBR].[BRImageUrl]
INTO #Results
FROM [tblBR]
INNER JOIN [tblType]
ON [tblBR].[BRTypeId] = [tblType].[ID]
INNER JOIN [tblSupervisor]
ON [tblBR].[SupervisorId] = [tblSupervisor].[ID]
where [tblBR].[Active] = 1
and [tblBR].[SupervisorId]=@SupId
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
END
现在我想修改查询,如下所示
if(@supId != 0) then where [tblBR].[Active] = 1
and [tblBR].[SupervisorId] = @SupId else [tblBR].[Active] = 1
怎么做?任何帮助我的人都非常感激。提前谢谢。只是基本逻辑,我认为:
where [tblBR].[Active] = 1
and (
[tblBR].[SupervisorId]=@SupId or
@SupId = 0
)
这里不需要控制流语句之类的语句。您只需要表示备选方案并使用布尔运算符将它们链接在一起。我要做的是,在where子句之后添加以下代码
AND [tblBR].[Active] = 1
AND [tblBR].[SupervisorId] = CASE WHEN @supId != 0 THEN @supId ELSE [tblBR].[SupervisorId] END
第二种方法是检查变量是否不同于0,在这种情况下,它将使用变量过滤supervisorid,如果等于0,它将根据其行值过滤supervisorid字段