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
    将来的你,一定会感谢现在努力的自己!
  • 相关阅读:
    AIX6.1 线程模型说明
    多线程专题之线程死锁原因之谜
    多线程执行顺序诡异现象谈,你不知道的pthread_create
    SOA体系结构基础培训教程-规范标准篇
    C# AES要解密的数据的长度无效
    winform命名规范
    winform 打开一个窗体,关闭一个窗体
    VS2017专业版和企业版激活密钥
    AES五种加密模式
    c#POST请求php接口
  • 原文地址:https://www.cnblogs.com/GreatPerson/p/8060644.html
Copyright © 2011-2022 走看看