这篇文章主要为大家详细介绍了SQL Server 两种分页的存储过程使用示例,具有一定的参考价值,可以用来参考一下。 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分页的方法。 一、 以学生表为例,在数据库中有一个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,那么分页存储过程可以写出: 代码如下:
说明因为在实际的项目的开发中,经常要显示总页数给用户看的,所有这里的存储过程增加了一个toPage参数,由于它是要输出给用户看的,所有参数类型定义为output,并用set进行赋值。 |
|