<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Oracle中取固定記錄數的方法

    在實際應用中,為了分頁或查詢性能的需要,我們往往需要從數據庫查詢固定行數的記錄,不同的數據庫有不同的SQL語句來完成,在Oracle數據庫中,可以用以下方法來實現,假設我們要從一個有百萬條記錄的表中每次取10萬條進行處理,可以按如下步驟進行:
    1、創建表
    Drop TABLE VEHICLE;
    Create TABLE VEHICLE (
                          MAKE VARCHAR2(256) NOT NULL,
                          MODEL VARCHAR2(256),
                          REGISTRATION_NO NUMBER(15) NOT NULL primary key,
                          AGE NUMBER(2,1) NOT NULL,
                          CATEGORY VARCHAR(1) NOT NULL,
                          MILAGE NUMBER(15,2) NOT NULL,
                          LAST_SERVICE_DATE DATE NOT NULL
                          );
     
    2、插入數據
    可以用入下存儲過程進行批量數據的插入,
    create or replace PROCEDURE INSERT_APPOINTED_RECORDS
    ( startNum IN NUMBER, endNum IN NUMBER) AS
    i number:=startNum;
    j number:=endNum;
    BEGIN
    dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
      While i<=j Loop
        INSERT INTO
        VEHICLE   (REGISTRATION_NO,MAKE,MODEL,AGE,CATEGORY,MILAGE,LAST_SERVICE_DATE)
        VALUES
        (i,'test','test',3,'A',1000,SYSDATE);
        i:=i+1;
        End Loop;
    dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
    END INSERT_APPOINTED_RECORDS;
    3、查詢固定行數的記錄
    在Oracle數據庫中需要結合ROWNUM來完成,可以用如下方法來實現,如要取按ROWID排序的5000到10000之間的記錄
    SELECT * FROM vehicle WHERE ROWNUM<10001 minus SELECT * FROM vehicle WHERE ROWNUM<5001;
    如果需要按照某字段排序來查詢,如,按制造商Make來排序,就需要用到子查詢,性能就會有明顯的影響
    SELECT * from (SELECT * FROM vehicle order by make) WHERE ROWNUM<10001 minus SELECT * from (SELECT * FROM vehicle order by make) WHERE ROWNUM<5001;
    由于你對ROWNUM不能用像 Where rownum >10 and rownum <100這樣的語法,所以有點別扭,但是你可以通過以下方式來用:
    select * from (select rownum r,REGISTRATION_NO,MAKE,MODEL,AGE,CATEGORY,MILAGE,LAST_SERVICE_DATE from vehicle) where r >=5000 and r<=10000;
    或者
    select * from (select rownum r,REGISTRATION_NO,MAKE,MODEL,AGE,CATEGORY,MILAGE,LAST_SERVICE_DATE from vehicle) where r between 5000 and 10000;
    這樣就比較合符習慣了,不能用如下語句:
    select * from (select  * from vehicle order by make) where rownum between 5000 and 10000;
    或者
    select * from (select  * from vehicle order by make) where rownum >= 5000 and rownum<=10000;
     

    本文出自 “靜侯佳音” 博客,請務必保留此出處http://thomas.blog.51cto.com/177910/29136



    posted on 2008-07-26 11:38 魯勝迪 閱讀(1051) 評論(0)  編輯  收藏 所屬分類: 一點點

    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    新聞分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产性生大片免费观看性| 亚洲av日韩av永久无码电影| 国产精品综合专区中文字幕免费播放 | 无码av免费一区二区三区试看| 亚洲精品无码AV中文字幕电影网站| 欧美色欧美亚洲另类二区| 德国女人一级毛片免费| 免费A级毛片无码A∨中文字幕下载 | 亚洲精品动漫人成3d在线 | 亚洲成aⅴ人片久青草影院按摩| 国产一区二区三区免费观看在线 | xxxx日本免费| 亚洲午夜精品一区二区麻豆| 在线免费观看中文字幕| 色偷偷亚洲第一综合| 又粗又大又长又爽免费视频| 国产精品内射视频免费| 亚洲一区二区三区在线观看精品中文 | 久久水蜜桃亚洲av无码精品麻豆| 51视频精品全部免费最新| 亚洲mv国产精品mv日本mv| 波多野结衣久久高清免费| 一本久久免费视频| 亚洲AV无码成人精品区在线观看| 四虎在线免费视频| 亚洲AV色欲色欲WWW| 国产AV无码专区亚洲AV毛网站 | 亚洲男人的天堂一区二区| 两性色午夜免费视频| 在线免费观看亚洲| 精品免费久久久久久成人影院| 一级人做人a爰免费视频| 亚洲国产成人久久综合碰碰动漫3d| 国产免费AV片在线播放唯爱网| 亚洲hairy多毛pics大全| 亚洲无av在线中文字幕| 91精品免费久久久久久久久| 老司机亚洲精品影院在线观看| 亚洲国产成人一区二区精品区| 女人毛片a级大学毛片免费| 国产久爱免费精品视频 |