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

  • 相关阅读:
    转发与重定向的区别
    Servlet开发详讲
    Servlet的常见错误
    HTTP请求方式之POST和GET的区别
    Spring各种类型数据的注入
    Spring容器的基本使用
    Python接口自动化-测试用例编写
    Python接口自动化-设计测试用例
    python简明教程之数据结构(列表、元组、字典、集合)
    python简明教程之函数
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/dfgsd563454.html
Copyright © 2011-2022 走看看