首页 > 资讯列表 > 编程/数据库 >> 数据库操作教程

SQLServer两种分页的存储过程使用介绍

数据库操作教程 2022-09-23 17:46:34 转载来源: 网络整理/侵权必删

由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分页的方法。一、以学生表为例,在数据库中有一个Student表,字段有StudentNo,,LoginPwd,StudentName,Sex,ClassId,Phone,Address,BornDate,Email,isDel要求:查询学生的信息,每页显示5条记录二、第一种方式分页:利用子查询notin例如:第一页selecttop5*fromStudent第二页:查询前10条中不在前5条的记录,那么就是6-10,也就是第二页selecttop5*fromStudentwhereStudentNonotin(selecttop10StudentnofromStudent)同理可以得到第三页、、、、、、、这种方式相信大家都能明白,这种分页的存储过程写法就不多做介绍,重点介绍下面那种分页方法

由于现在很多的企业招聘的笔试都会让来招聘的写一个分页存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分页的方法。

一、 以学生表为例,在数据库中有一个Student表,字段有StudentNo, ,LoginPwd, StudentName,Sex,ClassId,Phone,Address,BornDate,Email,isDel

要求:查询学生的信息,每页显示5条记录

二、第一种方式分页:利用子查询 not in

例如:

第一页

select top 5 * from Student

第二页: 查询前10条中不在前5条的记录,那么就是6-10,也就是第二页

select top 5 * from Student where StudentNo not in(select top 10 Studentno from Student)

同理可以得到第三页、、、、、、、

这种方式相信大家都能明白,这种分页的存储过程写法就不多做介绍,重点介绍下面那种分页方法。

三、第二种方式分页:利用ROW_NUMBER()这个自带的函数

因为自05之后,提供一个专门用于分页的函数,那就是ROW_NUMBER()这个函数,分页的基本语法:ROW_NUMBER() over(排序字段):可以根据指定的字段排序,对排序之后的结果集的每一行添加一个不间断的行号,相当于连续的id值一样,

例如sql语句:select ROW_NUMBER() over(order by studentno) id, * from Student 那么结果集可以看到:

那么我们可以看到id值是连续的,所有接下来的存储过程写起来就比较简单了。

注意:我们必须为这个结果集命一个新名字,比如我们命名为temp,那么分页存储过程可以写出:

if exists( select * from sysobjects where name='usp_getPageData')drop proc usp_getPageData --如果存在名字为usp_getPageData的存储过程则删除gocreate proc usp_getPageData --创建名字usp_getPageData存储过程@toPage int=0 output, --总页数@pageIndex int =1 , --默认显示第一页@pageCount int =5 --默认每页的记录为5条asselect temp.StudentNo,temp.LoginPwd,temp.StudentName,temp.Sex,temp.ClassId,temp.Phone,temp.Address,temp.BornDate,temp.Email,temp.isDel from(select ROW_NUMBER() over (Order by studentno) id,* from Student) tempwhere id>(@pageIndex-1)*@pageCount and id<=@pageIndex*@pageCountset @toPage=ceiling((select COUNT(*) from Student)*1.0/@pageCount) --使用ceiling函数算出总页数go

说明因为在实际的项目的开发中,经常要显示总页数给用户看的,所有这里的存储过程增加了一个toPage参数,由于它是要输出给用户看的,所有参数类型定义为output,并用set进行赋值。

以上是对两种分页方法的介绍,如果有任何疑问或不懂的可以留言给我。

标签: SQLServer 两种 分页 存储 过程 使用 介绍


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持