• 分页存储过程


        
    Create PROCEDURE [dbo].[Proc_GetRecordByPage]          
    (          
     @tblName      NVARCHAR(2000),       -- 表名          
     @fldName      varchar(4000)='*',       -- 表的字段  
     @groupBy     varchar(800)='',       -- 分组         
     @strWhere     varchar(8000) = '',  --查询条件          
     @OrderByFld   varchar(500),       --排序条件          
     @pageSize int = 10,               --每页显示的记录个数          
     @pageIndex int = 1,              --要显示那一页的记录          
     @Counts int = 0 OUTPUT            --查询到的记录数          
    )          
    AS   
    PRINT   LEN(@strWhere)
    PRINT @strWhere
    DECLARE @pageUp INT           
    DECLARE @pageDown INT          
    DECLARE @EXECSQL NVARCHAR(4000)       
              
    SET @pageDown = @pageSize * (@pageIndex - 1) + 1          
    --当前页的最后一条记录RowID          
    SET @pageUp = @pageSize * @pageIndex   
    --if(@groupBy='') 
      begin
        SET @strWhere=' WHERE 1=1 ' +@strWhere    
      end 
    --else 
    --  begin      
    --     SET @strWhere=' having 1=1 ' +@strWhere   
    --  end    
    SET @ExecSQL= 'SELECT * FROM(SELECT '+@FldName+ ',RowID = ROW_NUMBER() OVER ('+@orderByFld+')          
         FROM ' +@tblName+' '+ @strWhere+@groupBy+' )          
           AS PageTableList '
    declare @Page nvarchar(100)
    set @Page =' WHERE RowID  BETWEEN ' + STR(@pageDown) +' AND ' +STR(@pageUp)          
    print @ExecSQL +@Page
    --获得总记录数          
    EXEC(@ExecSQL +@Page)          
    SET  @ExecSQL='SELECT @Counts= COUNT(*) FROM ('+ @ExecSQL + ') As TotalCount '
    exec sp_executesql   @ExecSQL,N'@Counts int output ',@Counts   output             
    PRINT @Counts 
    

      

  • 相关阅读:
    select 1 from ... sql语句中的1代表什么意思?
    装饰者模式
    Dao层抽取BaseDao公共方法
    DBUtils工具类
    java Page分页显示
    QTP
    Gym 100513F Ilya Muromets(前缀和)
    AcWing1165 单词环(01分数规划)
    AcWing904 虫洞(spfa判负环)
    AcWing1148 秘密的奶牛运输(次小生成树)
  • 原文地址:https://www.cnblogs.com/rambo1293271398/p/3615788.html
Copyright © 2020-2023  润新知