这里想了解下,关于SQL Server中分页和Oracle中分页;
平常写应用程序的时候,比如用的语言是Java,有个列表页面,需要对数据分页显示;
这里要分页难道不需要借助Java,而直接sql能知道分页吗,起码也要传个页码进去给SQL吧!另外说的Oracle分页,是不是Oracle本身也能分页,在应用程序中也是不需要借助其它的呢?

解决方案 »

  1.   

    sql语句肯定是通过程序传进去的撒,这个是可以拼出来的
      

  2.   

    java分页是啥啊?你还没弄明白分页含义,分页无非就是你查询出来的数据按照页码来显示,如果查询出来数据很多一般才需要分页,数据不多一般不需要分页,分页时可以有两种方式:
    (1):一次性查询出来,然后根据不同页码来显示出相应结果(select * from table )
    (2):每次只查询你需要显示的条数,然后根据你提供的页码显示相应的记录数,这时一般用sql来查询,比如每页显示5条,现在是第二页,那么我就查数据中5-10条,具体sql就不写了。(网上查下很简单)
      

  3.   

    这个会哦,只是有个人问我 会不会sql分页和orale分页
      

  4.   

       没怎么用过SQl server数据库。我一般用Oracle、Mysql做分页,其实每种数据库都有自己的分页方法,而我们常用的Hibernate分页方法就是对Oracle、MySQL 等数据库的分页方法进行了封装,Oracle分页采用rownum(Oracle的字段,称为伪劣,不明白的可以上网查询)实现,MysQL采用limit(网上可以查询)实现,可以说我们只要传入页码到分页方法中即可实现分页
      

  5.   

    你用的 SQL Server 是什么版本的?如果是 2000 或者之前的话那得使用麻烦的 TOP 子句,如果是 2005 或者是以后的版本可以使用与 Oracle 一样语法的 row_number() 分析函数。
      

  6.   


    SQL 分页是啥?分页一般都是用 SQL 语句写的啊,有可能有人也会使用存储过程去写。
      

  7.   

    oracle有特殊的分页方式
    sql server呢最好是用游标
    我个人觉得哈
      

  8.   

    说说oracle分页的sql语句,分排序和不排序两种。当结果集不需要进行排序时,每页显示条数为:rowPerPage,当前页数为:currentPage。1、 相对来说,这种查询速度会快一些,因为当currentPage小时,嵌套语句查询的结果集小。但当currentPage 变大时,查询速度会慢慢变慢。当结果集很大时,查询第一页跟最后一页的速度会有明显变化。(倾向用这种!)select * from(
    select rownum r,  field1,field2 from table_name where rownum <= currentPage * rowPerPage

    where r > (currentPage-1) * rowPerPage 2、相对来说,这种查询速度会慢一些,无论当currentPage大小,嵌套语句查询的结果集都是一样多的,都是整个结果集。但是,当结果集很大时,查询第一页跟最后一页的速度不会有明显变化。select * from(
    select rownum r,  field1,field2 from table_name 

    where r  > (currentPage-1) * rowPerPage  and  r <= currentPage * rowPerPage当需要进行排序时,以第一种方式进行示例如下:select * from(
    select rownum r, a.* from (
    select  field1,field2 from table_name order by field1 
    ) a where rownum <= currentPage * rowPerPage
    ) where r > (currentPage-1) * rowPerPage 
      

  9.   

    这个呢select * from 
      (select a.*,rownum row_num from 
              (select * from tabelTest t order by t.id ) a
      ) b 
    where b.row_num between (currentPage-1)*pagesize and currentPage*pagesize
      

  10.   

    无论你想实现哪种分页都需要在JSP页面传递参数到action可以在action里处理 编写动态sql也可以将参数在传给oracle在oracle底层编写存储过程实现分页功能
      

  11.   

    没明白LZ你啥意思正常情况下是通过SQL分页的 拼SQL语句查询符合条件的记录也可以用ResultSet分页 也可以
      

  12.   

    oracle server分页和SQL分页 不只是sql的不同吗?
      

  13.   

    ORACLE分页数据需要自己去完成,不论是程序还是哪里都是,关键是如何分得较好而已,一般在ORACLE内部分页,我使用过有三种:1、使用常规ROWNUM分页,该分页方式,为最常用的方式,就是将ROWNUM作为序号,然后提取对应序号,9楼有详细说明,不过由于ROWNUM是数据生成过程中才出现,所以ROWNUM在在判定大于数据的时候都会拿到第二层来判定;那么随着分页页面量的增加,越向后,分页的内部返回会越来越多,其实这是回表逻辑读越来越多,会导致性能降低,一般向后翻几十页是没事的,非常多才会有明显变化,如翻了七八万条数据才会有较为明显变化。2、使用索引上分页,分页后ROWID回表提取数据(ROWID只会在进行压缩表、FALSHBACK、对象进行表空间转移的时候会发生变化),其逻辑读几乎不受到翻页的限制,因为索引本身就是有序的,不论找那个位置的数据都可以很快找到那个位置,另外这种分页方式一般依赖于前期较好的表结构设计(对于同业务查询最多为星型结构,以一个核心表展开查询),以及不能提供过多的查询条件。3、分析函数ROW_NUMBER() OVER(....)进行分页,会得到一些意想不到的效果,在某些时候效率未必是最高的,但是它查询效率是一般是较为稳定的。
      

  14.   

    Oracle本身的分页指的是利用rowid伪列,但是注意要子查询:select t.rowid,t.* from (select * from yourtablename) tDB2也有自己的伪列函数Row_number() Over()MySql的分页为limit 后缀 select * from t limit 5