Oracle 限定返回的結果集 ROWNUM

2021-06-27 15:15:29 字數 1289 閱讀 5226

-- start

首先,我們準備一下測試資料。

create table test

( name varchar2(20),

birthday date

);insert into test values ('張三', date '2014-12-14');

insert into test values ('李四', date '2013-12-14');

insert into test values ('王五', date '2012-12-14');

insert into test values ('趙六', date '2011-12-14');

oracle 在查詢資料的時候會為每一行賦乙個行號,這個行號會儲存在乙個叫做 rownum 偽列中,我們可以通過這個偽列來限定返回的結果集。下面的 sql 返回兩條資料。

select * from test where rownum < 3;

值得注意的是 oracle 並不是先查詢資料,後賦行號,而是查到一條賦一條,為什麼這麼說呢?下面讓我們查詢一下年齡最大的兩個人是誰?

select * from test where rownum <= 2 order by birthday;

結果如下:

name birthday

李四 14-12月-13

張三 14-12月-14

很明顯,這不是我們想要的結果,它是先返回兩條資料,後對這兩條資料排序。那這個 sql 應該怎麼寫呢?答案是子查詢。

select * from (select * from test order by birthday) where rownum <= 2;

結果如下:

name birthday

趙六 14-12月-11

王五 14-12月-12

到此為止你應該對 rownum 有一定的了解了吧,那麼下面這個 sql 返回什麼樣的資料呢?我保證答案超乎你的想象。

select * from test where rownum > 1;

--更多參見:oracle sql 精萃

-- last edited on 2015-06-23

-- created by shangbo on 2014-12-14

-- end

oracle 返回結果集的方法

oracle返回結果集 過程返回記錄集 create or replace package pkg test as type myrctype is ref cursor procedure get p id number,p rc out myrctype end pkg test create ...

Oracle 儲存過程返回結果集

oracle 儲存過程返回結果集 1.返回陣列 在oracle後台建立乙個程式包或者儲存過程 connect scott tiger create or replace package ado callpkg as type eid is table of number 4 index by bin...

oracle 儲存過程返回結果集

好久沒上來了,難道今天工作時間稍有空閒,研究了一下oracle儲存過程返回結果集.配合oracle臨時表,使用儲存過程來返回結果集的資料讀取方式可以解決海量資料表與其他表的連線問題.在儲存過程中先根據過濾條件從海量資料表中選出符合條件的記錄並存放到臨時中,可以通過乙個檢視將臨時表與其他相關表連線起來...