<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)

    隨筆分類

    隨筆檔案

    文章分類

    新聞分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产成人精品免费视频大全| 国产精品亚洲五月天高清| 国产一级婬片A视频免费观看| 日日夜夜精品免费视频| 亚洲AV无码成人精品区狼人影院| 成人免费无码大片a毛片| 亚洲砖码砖专无区2023| 四虎成人免费大片在线| 国产精品亚洲片在线花蝴蝶| 亚洲日韩精品无码专区网站| 国产精品高清免费网站| 亚洲av无码一区二区乱子伦as| 免费观看在线禁片| 亚洲成人免费网址| 国内外成人免费视频| 无遮挡国产高潮视频免费观看| 亚洲中文字幕无码一区二区三区| 国内永久免费crm系统z在线 | 2019亚洲午夜无码天堂| 猫咪社区免费资源在线观看| 午夜亚洲WWW湿好爽| 亚洲人成网站18禁止一区| 在线观看免费黄色网址| 亚洲免费在线观看视频| 国产精品美女自在线观看免费| www在线观看免费视频| 亚洲国产日韩一区高清在线| 四虎在线免费播放| 中文字幕的电影免费网站| 亚洲人成电影亚洲人成9999网 | 免费中文字幕不卡视频| 99久久国产精品免费一区二区| 91嫩草亚洲精品| 免费在线观看理论片| 日韩免费高清大片在线| 亚洲精品无码专区在线| 精品亚洲永久免费精品| 色吊丝永久在线观看最新免费| 日本一道本不卡免费| 99热亚洲色精品国产88| 精品国产亚洲男女在线线电影|