sybase分页的实现
来源:互联网 发布:西安 长沙 知乎 编辑:程序博客网 时间:2024/05/18 21:48
create procedure splitpage_sybase @qry varchar(16384),@ipage int, @num int,@maxpages int = 5000 as/*@qry SQL语句, @ipage 页数, @num 每页记录条数, @maxpages 最大查询页数 */ begin declare @rcount int declare @execsql varchar(16384) if @ipage > @maxpages begin select '输入页数[' || convert(varchar,@ipage) || ']大于最大查询页数[' || convert (varchar,@maxpages) ||']' return end select @rcount=@ipage*@num set rowcount @rcount --将查询语句的select 替换成 select sybid=identity(12), set @execsql = stuff(@qry,charindex('select',@qry),6,'select sybid=identity(12),') --将查询语句的from替换成into #temptable1 from,先将查询结果存放到临时表#temptable1 set @execsql = stuff(@execsql, charindex('from',@execsql),4,'into #temptable1 from') --重组sql语句,分页的核心控制处 set @execsql = @execsql || ' select * from #temptable1 where sybid >' || convert(varchar,(@ipage-1)*@num) || ' and sybid <= ' || convert(varchar,@ipage*@num) execute (@execsql) set rowcount 0 end
执行存储过程splitpage_sybase即可。
exec splitpage_sybase ‘sql查询语句’,1,100,1000
实现原理:
1) 将原始sql查询语句的select,替换成select sybid=identity(12),目的是引入分页的记录数控制值;
2) 将原始sql查询语句的from,替换成into #temptable1 from,目的是将查询结果存入临时表#temptable1;
3) 重组原始sql查询语句,加上' select * from #temptable1 where sybid >'
|| convert(varchar,(@ipage-1)*@num)
|| ' and sybid <= '
|| convert(varchar,@ipage*@num),实现真正的分页。
注意事项:
1)由于该分页实现是操作临时表#temptable1核心字段sybid实现的,而sybase数据库一张数据表只能有一个identity字段,因此原始查询结果中如果包含identity字段就会有问题。如遇到原始查询结果中包含identity字段,那么须将改字段convert成其它类型。
Reference:
http://www.xuebuyuan.com/1626555.html
- sybase分页的实现
- sybase分页的实现
- sybase分页存储过程的实现
- sybase的分页处理
- 存储过程实现sybase分页
- sybase 分页
- sybase代理表的实现
- Sybase分页语句存储过程实现(二)
- Sybase分页存储过程
- Sybase分页查询
- Sybase 分页查询语句
- sybase 分页取数据的sql怎么写?
- ibatis处理sybase分页的问题(还没有解决)
- 在SYBASE中进行分页查询的方法
- Sybase,Oracle,sqlserver中sql分页的方法汇总
- sybase中 类似dblink 的实现
- SYBASE到DB2连接服务器的实现
- SYBASE到ORACLE连接服务器的实现
- ORACLE 普通表转换成分区表(在线重定义)
- ios实现程序切入后台,实现后台任务
- shell脚本中的算术运算
- 云算法调用平台--web 工程调用hadoop集群1.3
- Linux CURL的安装和使用
- sybase分页的实现
- 重新获取验证码的按钮
- 第39级台阶
- [1355] Heaven Needn't Use Money
- linux命令英文全称
- Android 之 dex.jar和dx.jar问题
- Activity的四种launchMode
- 二叉堆(转载)
- centos6.2+nginx-1.2.3+php-5.3.17安装脚本