YellowStar5

风物长宜放眼量

0%

本文翻译自 https://blogs.oracle.com/oraclemagazine/on-rownum-and-limiting-results

一.Limiting Result Sets

ROWNUM是Oracle数据库一个神奇的栏目,让很多陷入麻烦。但是,当你学会了它是什么,它如何工作,ROWNUM可能会很有用。我使用它完成两件事:

1.执行TOP-N处理。这与其他数据库里的Limit语句功能是相似的。

2.通过查询来分页,尤其在一个无状态的环境中,比如说web。我在asktom.oracle.com网站上使用这个技术。

在我回顾一下ROWNUM如何工作之后,我会看一下这些用法。

二.HOW ROWNUM WORKS

ROWNUM 是一个虚列(不是一个真实列),可以在查询中使用。ROWNUM将会被福成成数字1,2,3,4,…, N, ,其中N是与ROWNUM一起使用的集合中的行数。一个ROWNUM值不会被永远赋值给一行(一条记录)。(这是一个常见的误解)。表中的一行(一条记录)没有对应的数字;你不能要求从表中拿出第五行-没有这样的事情。

同样令许多人困惑的是什么时候一个ROWNUM值被真正地赋值。ROWNUM值在通过查询的谓词阶段之后但在查询执行任何排序或聚合之前分配给行。此外,ROWNUM值仅在分配后递增,这就是以下查询永远不会返回行的原因:

select * 
  from t 
 where ROWNUM > 1;

由于表中的第一行不满足ROWNUM>1, 所以ROWNUM不会增长到2.因此,永远不会有ROWNUM 数值大于1的情况。
考虑一个带有以下结构的查询:

阅读全文 »

翻译自http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html

介绍

cron是一个已经存在很长时间的UNIX工具,因此它的调度功能非常强大且经过验证。 CronTrigger类基于cron的调度功能。

CronTrigger使用“cron表达式”,它能够创建触发时间表,例如:“每周一至周五上午8:00”或“每个月最后一个星期五的凌晨1:30”。

Cron表达式很强大,但可能会让人很困惑。 本教程旨在揭示创建一个cron表达式的一些谜团,为用户提供他们可以在论坛或邮件列表中询问之前可以访问的资源。

格式

cron表达式是由空格分隔的6或7个字段组成的字符串。 字段可以包含任何允许的值,以及该字段允许的特殊字符的各种组合。 字段如下:

字段名称 是否必须 取值范围 可选的特殊字符
秒 ( Seconds ) 0-59 , - * /
分 ( Minutes ) 0-59 , - * /
时 ( Hours ) 0-23 , - * /
月里的第几天 ( Day of month ) 1-31 , - * ? / L W
月 ( Month ) 1-12 或者 JAN-DEC , - * /
周里的星期几 ( Day of week ) 1-7 或者 SUN-SAT , - * ? / L #
年 ( Year ) empty, 1970-2099 , - * /

所以cron表达式可以这么简单: * * * * ? * (每秒触发一次)
或者复杂些, 比如: 0/5 14,18,3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010

阅读全文 »