Informix 中如何实现 Oracle rownum 功能的研究
2013-05-24 10:12
786 查看
许多习惯于Oracle的人,通常在开始使用Informix数据库的时候,会遇到各种疑问:Informix不支持,Informix没有这个功能?其实,很多时候Informix只是以不一样的方式来实现,或者通过开发可以实现类似功能。
本文如下部分研究如何在 Informix 中实现 Oracle中的 rownum 的一些应用功能。
大家都知道在Oracle 数据库中有一个伪列 ROWNUM,返回一个从1开始的序列数。可以用来进行全前N条记录,或者分页操作。
Oracle SQL如下:
Informix 有更简单、高效的分页功能:
记录编号:
在ORACLE中,可以直接通过rownum 得到每条记录的一个编号,
Informix中需要通过创建一个存储过程来实现类似功能。
可以按如下方式使用函数反问记录编号。
注意:如果在同一个session中要执行多次rownum,则需要先执行:
注:本文转载自:http://www.informixchina.net/home/space.php?uid=201&do=blog&id=2079
本文如下部分研究如何在 Informix 中实现 Oracle中的 rownum 的一些应用功能。
大家都知道在Oracle 数据库中有一个伪列 ROWNUM,返回一个从1开始的序列数。可以用来进行全前N条记录,或者分页操作。
Oracle SQL如下:
select * from sometable where rownum <= 100; select * from sometable where rownum > 100 and rownum <= 200; SELECT * FROM ( SELECT A.*,ROWNUM AS RN FROM (SELECT * FROM sometable order by col) A WHERE ROWNUM <= 200) T WHERE T.RN > 100
Informix 有更简单、高效的分页功能:
select first 100 * from sometable; select skip 100 first 100 * from sometable; select skip 100 first 100 * from sometable order by col;
记录编号:
在ORACLE中,可以直接通过rownum 得到每条记录的一个编号,
select rownum, * from sometable ;
Informix中需要通过创建一个存储过程来实现类似功能。
CREATE FUNCTION rownum () returning int as rownum; define global counter int default 0; let counter = counter + 1; return counter; end function; CREATE PROCEDURE init_rownum (); define global counter int default 0; let counter = 0; end procedure;
可以按如下方式使用函数反问记录编号。
execute procedure init_rownum(); --如果在同一个session中要执行多次rownum select rownum() as rownum, tabname from systables; select * from (select rownum() as rownum, tabname from systables) order by tabname;
注意:如果在同一个session中要执行多次rownum,则需要先执行:
execute procedure init_rownum();使计数器归零。
注:本文转载自:http://www.informixchina.net/home/space.php?uid=201&do=blog&id=2079
相关文章推荐
- sqlserver 中如何实现ORACLE中的ROWNUM功能
- sqlite实现oracle的rownum功能
- 如何在Oracle 中实现类似自动增加 ID 的功能?
- SQLServer 实现oracle中rownum 的功能
- 关于如何实现表间查询并提取班号的再研究(字典功能)
- oracle如何实现lastindexof的功能
- 在Oracle Form中,如何实现自动编号(行号)的功能
- mysql 如何实现oracle中decode(...)函数的功能
- sqlserver2005实现oracle中的rownum(记录号)功能
- Oracle中的ROWNUM rowid 以及MySQL中实现rownum功能类似的语句
- 如何在Oracle 中实现类似自动增加 ID 的功能?
- Mysql实现oracle的rownum功能
- MySQL使用递归存储过程实现树状结构,实现Oracle的Connect By 功能在Mysql中如何实现Oracle中的递归
- 在Oracle Form中,如何实现自动编号(行号)的功能
- oracle如何实现&ldquo;limit&rdquo;的功能
- 在Oracle Form中,如何实现自动编号(行号)的功能
- oracle 如何在group by 的语句中使用rownum,实现分页
- oracle审计功能如何实现启动关闭功能
- mysql实现oracle的rownum功能
- 在Oracle Form中,如何实现自动编号(行号)的功能