首页 > 代码库 > 分页存储过程

分页存储过程

 表T_phone中字段:Id, Haoduan, Adress, Type, Quhao

1,ROW_NUMBER()是个开窗函数,它可以与聚合函数一起用,就算删除表中的列,排序也不会乱

select *,ROW_NUMBER() over(order by id) as 排序 from T_Phone

2,那么分页的sql语句就是这样,假如一页十行,查询第三页

1 select * from 
2 (
3     select *,ROW_NUMBER() over(order by id) as 排序 from T_Phone 
4 )  as tbl where tbl.Id between 2*10+1 and 3*10
分页的sql语句

3,分页的存储过程就可以这样写

1     CREATE PROC usp_phone
2 @index int=1,
3 @pageSize int=10
4 AS
5 BEGIN
6 SELECT * FROM(SELECT ROW_NUMBER()OVER (ORDER BY id)AS rownum,*from T_phone) AS T
7 WHERE rownum BETWEEN (@index-1)*@pageSize+1 and @index *@pageSize 
8 END
分页存储过程

执行存储过程:exec usp_phone 10,10

4,存储过程优点

--执行速度更快 – 在数据库中保存的存储过程语句都是编译过的
--允许模块化程序设计 – 类似方法的复用
--提高系统安全性 – 防止SQL注入
--减少网络流通量 – 只要传输 存储过程的名称

6,缺点:调试麻烦,把所有的业务逻辑都放在了数据库中,改动的时候麻烦。