Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Oracle和分页大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在 MySql中,使用liMIT子句可以使用单个SQL语句轻松实现分页的概念,如下所示.
SELECT country_ID,country_name 
FROM country c 
ORDER BY country_ID DESC 
liMIT 4,5;

它将检索SQL查询检索的结果集中从5到10开始的行.

在Oracle中,使用带有子查询的行号可以实现同样的目的,使得任务有点繁琐,如下所示.

SELECT country_ID,country_name
FROM
  (SELECT rownum as row_num,country_ID,country_name
   FROM
    (SELECT country_ID,country_name
     FROM country
     ORDER BY country_ID desc)
  WHERE rownum <= 10
  )
WHERE row_num >=5;

在Oracle 10g(或更高版本中,我不确定更高版本),这可以做得有些简单,例如,

SELECT country_ID,country_name
  FROM (SELECT country_ID,country_name,row_number() over (order by country_ID desc) rank
      FROM country)
 WHERE rank BETWEEN 6 AND 10;

关于像Web应用程序这样的应用程序,需要分页的概念几乎无处不在,并且每次执行(select)查询时编写这样的SQL语句有时是一项繁琐的工作.

假设我有一个使用Java的Web应用程序.如果我使用Hibernate框架,那么有一种直接的方法可以使用Hibernate支持的一些方法,比如

List<Country>countryList=session.createquery("from Country order by countryID desc")
.setFirstResult(4).setMaxResults(5).List();

但是当我只使用与Oracle的JDBC连接时,

String connectionURL = "jdbc:oracle:thin:@localhost:1521:xe";
Connection connection = null;
Statement statement = null;
ResultSet rs = null;

Class.forname("oracle.jdbc.OracleDriver").newInstance();
connection = DriverManager.getConnection(connectionURL,"root","root");
statement = connection.createStatement();
rs = statement.executequery("SELECT * from country");

在这种情况下我的问题是,是否有一种使用此代码检索指定行范围的精确方法?就像前面的情况一样,使用类似setFirstResult()和setMaxResults()的方法?或实现此目的的唯一方法是使用指定的子查询.

因为’不’也是一个答案:

不幸的是,您将不得不使用子查询方法.我个人会使用排名第二的人(第二个).

大佬总结

以上是大佬教程为你收集整理的Oracle和分页全部内容,希望文章能够帮你解决Oracle和分页所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: