zoukankan      html  css  js  c++  java
  • 存储过程分页(sql2005)

    create database Test
    on primary ( name='Test_Data.mdf',
      filename='D:\我的资料\sql\备份\Test_Data.mdf'
    )
    log on
    (
      name='Test_Data.ldf',
      filename='D:\我的资料\sql\备份\Test_Data.ldf'
    )

    if object_id('tb') is not null drop table tb
    create table tb
    (
      Col int
    )
    insert into tb select top 50 number from master..spt_values where type='P' and number>0

    create proc SplitPage
    (
      @TableName nvarchar(50),
      @PageSize int,--每页显示的数量
      @CurrentPage int,--当前第几页
      @PageCol nvarchar(50),--排序字段
      @OrderNo nvarchar(50)--排序方式(DESC,ASC)
    )
    as
    /*
    测试用的
    declare @PageCol nvarchar(50)
    declare @TableName nvarchar(50)
    declare @OrderNo nvarchar(50)
    declare @PageSize int
    declare @CurrentPage int
    set @PageCol='Col'
    set @TableName='tb'
    set @OrderNo='DESC'
    set @PageSize=10
    set @CurrentPage=4
    */
    declare @sql nvarchar(1000)
    set @sql=''
    set @sql='
    ;with hgo as
    (
      select *,row_number() over(
      order by '+@PageCol+' '+@OrderNo+') rank
      from '+@TableName+'
    )'
    set @sql=@sql+'select Col from hgo where rank between '+ltrim((@CurrentPage-1)*@PageSize+1)+' and '+ltrim(@CurrentPage*@PageSize)
    --print @sql
    exec (@sql)

    exec SplitPage 'tb',10,1,'Col','DESC'

    Col
    -----------
    50
    49
    48
    47
    46
    45
    44
    43
    42
    41

    (10 行受影响)

    exec SplitPage 'tb',10,3,'Col','DESC'
    Col
    -----------
    30
    29
    28
    27
    26
    25
    24
    23
    22
    21

    (10 行受影响)

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2010/05/28/5630493.aspx

  • 相关阅读:
    mac下crontab定时任务使用
    javascript入门之算术乘法表
    原型模型
    Servlet开发
    工厂模式
    简单工厂模式
    Java设计模式之瞎BB的官话
    JavaBean技术
    软件设计模式之单例模式
    JSP页面请求与响应以及保存页面状态
  • 原文地址:https://www.cnblogs.com/fery/p/1766024.html
Copyright © 2011-2022 走看看