zoukankan      html  css  js  c++  java
  • 分页存储过程:自己写的

    USE [Northwind]
    GO
    /****** Object: StoredProcedure [dbo].[Sp_Pager] Script Date: 03/25/2013 17:54:18 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER proc [dbo].[Sp_Pager]
    @table varchar(100),--表名
    @where varchar(200),--条件
    @order varchar(200),--排序规则
    @pagecount int,--每页的数量
    @pageindex int,--当前页数
    @totalpage int output,--总页数(输出)
    @total int output--总人数(输出)
    as
    --定义全局变量
    declare @sql nvarchar(500)
    --确定主键
    declare @primarykey varchar(100)=''
    select @primarykey=name from sysobjects where parent_obj in(select id from sysobjects where name=@table) and xtype='PK'
    --确定总人数
    if @order !=NULL or @order !=''
    begin
    set @sql='select count(*) from '+@table+' '+@where+' order by '+@order
    exec sp_executesql @sql,@total output
    end
    else
    begin
    set @sql='select count(*) from '+@table+' '+@where +' order by '+@primarykey
    exec sp_executesql @sql,@total output
    end
    --确定总页数
    set @totalpage=CEILING(@total/@pagecount)
    --判断总页数与index的大小
    if @order !=NULL or @order !=''
    begin
    if @pageindex=@totalpage
    begin
    set @sql=''
    set @sql='select * from ('+'select * from '+@table+' '+@where+' order by '+@order +') where @primarykey not in ('+
    'select top '+(@totalpage-1)*@pagecount+' '+@primarykey+' from '+@table+' '+@where+' order by '+@order +')'
    exec sp_executesql @sql
    end
    else
    begin
    set @sql=''
    set @sql='select * from ('+
    'select top '+@pagecount+' * from(select top '+@pageindex*@pagecount+' * from '+@table+' order by '+@order+') a order by '+@primarykey+' DESC
    ) b order by '+@primarykey+' ASC'
    end
    end
    else
    begin
    if @pageindex =@totalpage
    begin
    set @sql=''
    set @sql='select * from ('+'select * from '+@table+' '+@where +' order by '+@primarykey +') where @primarykey not in ('+
    'select top '+(@totalpage-1)*@pagecount+' '+@primarykey+' from '+@table+' '+@where +' order by '+@primarykey
    exec sp_executesql @sql
    end
    else
    begin
    set @sql=''
    set @sql='select * from ('+
    'select top '+@pagecount+' * from(select top '+@pageindex*@pagecount+' * from '+@table+' order by '+@primarykey+'ASC ) a order by '+@primarykey+' DESC
    ) b order by '+@primarykey+' ASC'
    end
    end

  • 相关阅读:
    禁止input密码自动填充及浏览器记住密码完整解决方案
    修改微信小程序的原生button样式
    css 多行超长点点点
    Vue中如何导入并读取Excel数据
    微信小程序 页面打开时scrollview动态滚动到指定位置
    :class和:style的三元表达式
    Vue3.0手机端页面适配屏幕px2rem(自动将px转化为rem)
    9.JavaScript内置对象
    8.JavaScript对象
    7.JavaScript 预解析
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/dfgsd563454.html
Copyright © 2011-2022 走看看