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

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

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

    Oracle中取固定記錄數(shù)的方法

    在實際應(yīng)用中,為了分頁或查詢性能的需要,我們往往需要從數(shù)據(jù)庫查詢固定行數(shù)的記錄,不同的數(shù)據(jù)庫有不同的SQL語句來完成,在Oracle數(shù)據(jù)庫中,可以用以下方法來實現(xiàn),假設(shè)我們要從一個有百萬條記錄的表中每次取10萬條進行處理,可以按如下步驟進行:
    1、創(chuàng)建表
    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、插入數(shù)據(jù)
    可以用入下存儲過程進行批量數(shù)據(jù)的插入,
    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、查詢固定行數(shù)的記錄
    在Oracle數(shù)據(jù)庫中需要結(jié)合ROWNUM來完成,可以用如下方法來實現(xiàn),如要取按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;
     

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



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

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

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    新聞分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码国产精品一区二区免费| 999zyz**站免费毛片| 日韩免费一区二区三区在线播放| 亚洲网址在线观看你懂的| 在线观看免费播放av片| 亚洲免费人成在线视频观看| baoyu116.永久免费视频| 久久夜色精品国产亚洲| 日韩精品内射视频免费观看| 久久久久亚洲AV无码网站| 24小时在线免费视频| 亚洲精品福利你懂| 成人免费无码精品国产电影| 精品久久久久久亚洲综合网| 亚洲国产成人久久综合一区77| 本道天堂成在人线av无码免费| 日本亚洲欧洲免费天堂午夜看片女人员 | 国产午夜免费高清久久影院| 久久青草亚洲AV无码麻豆| 久久国产精品成人片免费| 国产亚洲sss在线播放| 日本免费电影一区| 男女一边摸一边做爽的免费视频| 久久久久久亚洲av成人无码国产| free哆啪啪免费永久| 亚洲国产精华液2020| 国产aⅴ无码专区亚洲av麻豆| 无码囯产精品一区二区免费| 亚洲日本久久一区二区va| 免费在线看片网站| 免费A级毛片无码视频| 亚洲国产精品网站在线播放 | 亚洲AV一宅男色影视| 日韩精品福利片午夜免费观着| 羞羞视频网站免费入口| 亚洲国产综合专区在线电影| 日韩免费a级毛片无码a∨| a级毛片高清免费视频就| 亚洲中文字幕无码一去台湾| 日韩精品亚洲aⅴ在线影院| 思思re热免费精品视频66 |