2007年5月25日星期五

2007年5月23日 星期三

昨天,昨天晚上回去不想写日志就没上来,一天半,基本上把junzhuan的四个页面的功能弄出来了,这都是自己写的,比hezhi改别人的东西顺唐多了,哈哈
    研究了一下oracle的分页,早就听说oracle可以支持分页的查询,而sqlserver好像就没有这种功能,但一直也不知道oracle是怎么分页的,这次的做的这个功能有机会看到老系统人家是怎么实现了,研究了研究终于明白了
    原来oracle每个表都有一个伪字段rownum,所谓伪字段,我的理解就是不是用户建的,也不用用户维护,还有个伪字段rowid。
    rownum是oracle在查询结果集的时候为每个记录顺序分配的,这样我们可以利用他来实现分页
    但不能这样写select * from table where rownum > 1 and rownum < 5
    因为已rownum做条件只能>0或者>负数
    因为oracle在比较的时候,第一条记录rownum=1,1>1不成立,丢弃,下一条记录rownum=1,1>1不成立,以此类推,没有符合条件的记录
    利用子查询实现分页
    select * from (select rownum r,td.* from (select * from table) td) where r > 10 and r < 20
    在这里rownum变成了一个结果集中的字段,根普通字段没什么两样,这样我们只要传入起至记录就可以分页啦,哈哈
    呵呵,原来oracle分页是这么搞的,刚知道,嘿嘿,学习啦。

没有评论:

发表评论