zoukankan      html  css  js  c++  java
  • SQL Server 存储过程通用分页

    ALTER  PROCEDURE [dbo].[NTP_Page] 
      @IndexField varchar(50)='id',
      @AllFields varchar(1000)='*', --需要返回的列 
      @TablesAndWhere varchar(1000)='', -- 表名和条件,from后面的,不要from,要一条where
      @OrderFields varchar(255)='',-- 排序的字段名
      @PageSize int = 10, -- 页尺寸
      @PageIndex int = 1, -- 页码
      @RecordCount int output,
      @PageCount int output
    AS
    if @PageSize < 1
      set @PageSize = 10
      declare @strSQL nvarchar(4000) -- 主语句
      set @strSQL = 'select @RecordCount=count('+ @IndexField +') from '+ @TablesAndWhere
      exec sp_executesql @strSQL,N'@RecordCount int output',@RecordCount out
      if @RecordCount % @PageSize = 0
        set @PageCount = @RecordCount/@PageSize
      else
        set @PageCount = @RecordCount/@PageSize+1
      if(@PageIndex > @PageCount)
        set @PageIndex = @PageCount
      if @PageIndex < 1
        set @PageIndex = 1
      if @PageIndex = 1
        set @strSQL='select top ' + CAST(@PageSize as nvarchar) + ' ' + @AllFields + ' from '+ @TablesAndWhere + ' ' + @OrderFields
      else
        begin
          declare @start int
          set @start = (@PageIndex - 1) * @PageSize
          set @strSQL= 'select top ' + CAST(@PageSize as nvarchar) + ' ' +  @AllFields  + ' from ' +  @TablesAndWhere + ' and '+ @IndexField  + ' not in (select top ' + CAST(@start as nvarchar) + ' ' + @IndexField + ' from ' + @TablesAndWhere + ' ' + @OrderFields +') '+ @OrderFields
        end
        print @strSQL
        exec sp_executesql @strSQL
    将来的你,一定会感谢现在努力的自己!
  • 相关阅读:
    LC 774. Minimize Max Distance to Gas Station 【lock,hard】
    LC 272. Closest Binary Search Tree Value II 【lock,hard】
    LC 644. Maximum Average Subarray II 【lock,hard】
    Java --- JSP2新特性
    Java ---Listener监听器
    Java ---Filter过滤器
    Java ---自定义标签(二)
    Java ---自定义标签
    Java ---理解MVC架构
    Java--JDBC连接数据库(二)
  • 原文地址:https://www.cnblogs.com/GreatPerson/p/8060644.html
Copyright © 2011-2022 走看看