Informix 中如何? Oracle rownum 功能的研究

來源:互聯網
上載者:User

許多習慣於Oracle的人,通常在開始使用Informix資料庫的時候,會遇到各種疑問:Informix不支援,Informix沒有這個功能?其實,很多時候Informix只是以不一樣的方式來實現,或者通過開發可以實作類別似功能。


本文如下部分研究如何在 Informix 中實現 Oracle中的 rownum 的一些應用功能。

大家都知道在Oracle 資料庫中有一個偽列 ROWNUM,返回一個從1開始的序列數。可以用來進行全前N條記錄,或者分頁操作。

Oracle SQL如下:

select * from sometable where rownum <= 100;select * from sometable where rownum > 100 and rownum <= 200;SELECT * FROM ( SELECT A.*,ROWNUM AS RN FROM (SELECT * FROM sometable order by col) A WHERE ROWNUM <=  200) T WHERE T.RN > 100

Informix 有更簡單、高效的分頁功能:

 select first 100 * from sometable; select  skip 100 first 100 * from sometable; select skip 100 first 100 * from sometable order by col;

記錄編號:

在ORACLE中,可以直接通過rownum 得到每條記錄的一個編號,

select rownum, * from sometable ;

Informix中需要通過建立一個預存程序來實作類別似功能。    
  

CREATE FUNCTION  rownum () returning int as rownum;  define global counter int default 0;  let counter = counter + 1;  return counter;end function;          CREATE PROCEDURE  init_rownum ();  define global counter int default 0;  let counter = 0;end procedure; 

可以按如下方式使用函數反問記錄編號。

execute procedure init_rownum(); --如果在同一個session中要執行多次rownumselect rownum() as rownum, tabname from systables;select * from (select rownum() as rownum, tabname from systables) order by tabname; 

注意:如果在同一個session中要執行多次rownum,則需要先執行:

execute procedure init_rownum();

使計數器歸零。




註:本文轉載自:http://www.informixchina.net/home/space.php?uid=201&do=blog&id=2079


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.