在实际的开发过程中,经常遇到存储过程分页,下面根据实际情况总结的几种方法:

数据库名称:myTest

1、思路:利用select top and select not in 排除例外情况的分页
use myTest
go
create procedure proc_paged_with_notin 
 (
     @pageIndex int,  --页索引
     @pageSize int    --每页记录数
 )
as
begin
    set nocount on; --没有返回值
    declare @sql nvarchar(500)
    set @sql='select top '+str(@pageSize)+' * from tb_TestTable where(ID not in(select top '+str(@pageSize*@pageIndex)+' id from tb_TestTable order by ID ASC)) order by ID'
    execute(@sql)  --因select top后不支持直接接参数,所以写成了字符串@sql
    set nocount off;
end

exec proc_paged_with_notin 10,5

2、思路:利用select top and select max(列)分页
use myTest
go
create procedure proc_paged_with_selectMax 
 (
     @pageIndex int,  --页索引
     @pageSize int    --每页记录数
 )
 as
 begin
 set nocount on;
    declare @sql nvarchar(500) 
    if @pageIndex=0
            set @sql='select top '+str(@pageSize)+' * from tb_TestTable order by ID'
    else
            set @sql='select top '+str(@pageSize)+' * From tb_TestTable where(ID>(select max(id) From (select top '+str(@pageSize*@pageIndex)+' id  From  tb_TestTable order by ID) as TempTable)) order by ID'
execute(@sql)
set nocount off;
end

exec proc_paged_with_selectMax 10,5

3、思路:利用Row_number()给数据行加上索引
create procedure proc_paged_with_Rownumber  --利用SQL 2005中的Row_number()
 (
     @pageIndex int,
     @pageSize int
 )
as
 begin
 set nocount on;
    select * from (select *,Row_number() over(order by ID asc) as IDRank from tb_testTable) as IDWithRowNumber where IDRank>@pageSize*@pageIndex and IDRank<@pageSize*(@pageIndex+1)
set nocount off;
end

exec proc_paged_with_Rownumber 10,5

三种方法的测试结果显示:select max >row_number>not in(分页速度)

转载于:https://www.cnblogs.com/jsping/archive/2012/08/19/2646237.html

使用存储过程创建分页相关推荐

  1. 三层架构+ajax分页实例,ASP.NET存储过程实现分页效果(三层架构)

    本文实例为大家分享了ASP.NET存储过程实现分页的具体代码,供大家参考,具体内容如下 实现效果: 文本框内输入跳转的页数,点击GO会跳转到该页 首先在项目下加入BLL,DAL,DataAccess, ...

  2. MySQL 学习笔记(6)— 存储过程创建、调用、删除以及带参数的存储过程

    1. 存储过程总结 存储过程是一种存储在数据库中的程序.它可以包含多个 SQL 语句,并提供许多过程语言的功能,例如变量定义.条件控制语句.循环语句.游标以及异常处理等. 1.1 存储过程优点 实现代 ...

  3. oracle存储过程建分区表,oracle存储过程创建表分区实例

    用存储过程创建数据表: 创建时注意必须添加authid current_user,如果创建的表已存在,存储过程继续执行,但如不不加此关键语句,存储过程将出现异常, 这个语句相当于赋权限. 例1 创建语 ...

  4. mysql 存储过程创建以及调用

    mysql创建存储过程详解 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据 ...

  5. 存储过程创建(过程、视图、函数)

    存储过程.视图.函数创建 1存储过程创建 2视图创建 3函数创建 1存储过程创建 //if进行判断过程名是否存在 存在删除 if exists (select * from dbo.sysobject ...

  6. mysql 存储过程建表_MySQL 存储过程创建表

    创建 CREATE PROCEDURE  Pro_IsExistTable(ableName varchar(100),out outputParam int) BEGIN set @csql=con ...

  7. oracle存储过程建表写法,用oracle存储过程创建表

    create or replace procedure createtable(tname in varchar2) is sqlTEXT varchar2(400); v_createsql var ...

  8. mysql使用存储过程创建动态表名及参数处理

    关于mysql的存储如何创建和使用:点击这里存储过程创建与使用有说明 直接上干货,我这里直接使用的是带有参数的创建 SQL如下: DELIMITER $ CREATE PROCEDURE spatia ...

  9. SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过...

    SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过   存储过程 创建存储过程 use pubs --pubs为数据库 go create proced ...

最新文章

  1. TensorRT Analysis Report分析报告
  2. linux csr蓝牙驱动,csr4.0蓝牙适配器驱动下载
  3. 排序 np_P问题、NP问题、NP完全问题和NP难问题理解
  4. 分布式之数据库和缓存双写一致性方案解析!
  5. CSS尺寸和字体单位-em、px还是%
  6. jquery框架分析-构造jquery对象初步
  7. poj 1511 Invitation Cards
  8. pyecharts制作交互式数据展示地图
  9. Gradle下载类库源码
  10. ubuntu18.04安装nvidia显卡驱动的正确方法
  11. gma 教程 | 气候气象 | 计算标准化降水指数(SPI)
  12. linux系统安装爱快,ESXi安装爱快iKuai OS路由(图文教程)
  13. 使用虚拟机安装操作系统可能出现的问题
  14. 孤单终结者:神棍节十大“脱光”应用
  15. 三星2022款 The Frame 画壁电视 评测
  16. Apple Catching
  17. bzoj1605 / P2905 [USACO08OPEN]农场危机Crisis on the Farm
  18. C# DevExpress控件Gridview和GridControl学习总结
  19. 水滴pin安卓版apk_小水滴app下载
  20. Chrome与Chromedriver版本对应表(最新)【附下载链接】

热门文章

  1. linux检测文件名编码,Linux下查看文件编码,文件或文件名编码格式转换 | 缥缈的云...
  2. RIPv1 与 RIPv2 基础配置
  3. Dubbo 云原生之路:ASF 毕业一周年、3.0 可期
  4. 还在担心服务挂掉?Sentinel Go 让服务稳如磐石
  5. 为什么下一个十年的主战场在 Serverless?
  6. vb6 判断打印机是否有效_智能收银机的热敏打印机打不出字怎么办?
  7. 大数据项目一般金额多少_大数据分析师年薪一般多少?学什么专业才能从事大数据?...
  8. android上传视频 断点续传,断点续传上传
  9. node oracle linux 安装,Linux 下 nodejs 使用官方oracledb库连接数据库 教程
  10. vue动态设置文字布局方式_详解Vue动态添加模板的几种方法