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

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

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

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發(fā)
    最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
    本站的官方站點(diǎn)是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評(píng)論 :: 0 Trackbacks
    key words :Oracle分頁 視圖

    google了一下關(guān)于Oracle的分頁方法,方法還不少,大多數(shù)效果差不多-有點(diǎn)惡心. 惡心也要作,不過后來就是大家都用得這種方式在我這里出現(xiàn)了新問題,奇怪的是怎么沒有別人碰到?

    String condition?=?"?teacher_id?=?"?+?userId?+?"?and?school_id="+siteId;
    sql?
    =
    ???
    "?select * "?+
    ???
    "?from your_table where?"?+?condition?+
    ???
    "?and?rowid?not?in?(?select?rowid?from your_table where"?+?condition?+
    ???
    "?and?rownum?<=?"?+?(pageIndex?-?1)?*?Constants.PAGE_NUMS +?")?"?+
    ???
    "?and?rownum?<=?"?+?Constants.PAGE_NUMS ;

    現(xiàn)在的問題是我需要按照table的某個(gè)字段排序,于是改成如下:
    String?condition?=?"?teacher_id?=?"?+?userId?+?"?and?school_id="+siteId;
    sql?
    =
    ????
    "?select?*?"?+
    ????
    "?from?your_table?where?"?+?condition?+
    ????
    "?and?rowid?not?in?(?select?rowid?from?your_table?where"?+?condition?+
    ????
    "?and?rownum?<=?"?+?(pageIndex?-?1)?*?Constants.PAGE_NUMS?+?"order by id desc)?"?+
    ????
    "?and?rownum?<=?"?+?Constants.PAGE_NUMS + " order by id desc";

    這個(gè)sql有問題么?
    答案是可能有問題,也可能沒有問題,因?yàn)閾?jù)說在8i的Oracle版本之前都不行,實(shí)際上也不盡然,在我的9i和10g我得到的是同樣的錯(cuò)誤 "missing right parenthesis",還有一位兄弟估計(jì)是DBA建議我去metalink打一個(gè)patch,埃,動(dòng)作太大了,不敢動(dòng)。

    問題還是要解決,試了下類似于select a.*,rownum r from (select * from table where ...) a where rownum < 10 等的方法,效果一樣,就是不能加嵌套的order by
    最后,用視圖的方法間接解決問題,因?yàn)槲乙鉀Q的問題實(shí)際就是按某個(gè)字段排序,那么在視圖里先對(duì)table進(jìn)行排序,再在視圖的基礎(chǔ)上作操作就OK了.

    另,還有一種不錯(cuò)的實(shí)現(xiàn)方法,即用OracleCachedRowSet,分頁也比較簡(jiǎn)單,有點(diǎn)類似于hibernate,由于時(shí)間關(guān)系沒有時(shí)間去看,感興趣的朋友可以看一下.


    BTW: 對(duì)于視圖可能rowid有問題,可以改成視圖的某個(gè)主鍵替換

    String?condition?=?"?teacher_id?=?"?+?userId?+?"?and?school_id="+siteId;
    sql?
    =
    ????
    "?select?*?"?+
    ????
    "?from?your_table?where?"?+?condition?+
    ????
    "?and?id?not?in?(?select?id?from?your_table?where"?+?condition?+
    ????
    "?and?rownum?<=?"?+?(pageIndex?-?1)?*?Constants.PAGE_NUMS?+?"order?by?id?desc)?"?+
    ????
    "?and?rownum?<=?"?+?Constants.PAGE_NUMS?+?"?order?by?id?desc";



    posted on 2006-09-20 15:36 Alex 閱讀(1699) 評(píng)論(3)  編輯  收藏 所屬分類: dataBase

    評(píng)論

    # re: Oracle分頁的一個(gè)問題 2006-09-21 11:03 效率
    效率,注意效率.
    如果數(shù)據(jù)在百萬條以上.嵌套將是很痛苦的.  回復(fù)  更多評(píng)論
      

    # re: Oracle分頁的一個(gè)問題 2006-09-21 15:08 Alex
    效率確實(shí)是個(gè)問題,問題是在目前所看到的Oracle分頁方案中幾乎都用到了嵌套,有什么別的辦法么?  回復(fù)  更多評(píng)論
      

    # re: Oracle分頁的一個(gè)問題 2006-09-21 17:32 123bingbing
    看新聞這么麻煩,找資料還是去www.mylinux.com.cn
    www.mylinux.com.cn網(wǎng)上軟件外包流水線,找資料,看新聞,接項(xiàng)目,積分換數(shù)碼產(chǎn)品  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲人成色777777在线观看 | 亚洲AV永久无码精品一福利| 久久亚洲AV无码西西人体| 成人免费网站在线观看| 95免费观看体验区视频| 韩国免费A级毛片久久| 猫咪免费人成在线网站 | 毛片免费视频在线观看| 国产精品99久久免费观看 | 亚洲国产婷婷六月丁香| 亚洲国模精品一区| 日本久久久免费高清| 成年美女黄网站色大免费视频| 91精品视频在线免费观看| 国偷自产一区二区免费视频| 中文字幕免费在线看电影大全| 日韩在线观看免费| 国产产在线精品亚洲AAVV| 亚洲AV无码一区二区三区牲色| 中国china体内裑精亚洲日本| 亚洲日韩乱码中文无码蜜桃臀 | 182tv免费视视频线路一二三| 久久免费视频观看| av永久免费网站在线观看| 波霸在线精品视频免费观看| 国产精品福利在线观看免费不卡| 成人特级毛片69免费观看| 免费看美女午夜大片| 深夜福利在线免费观看| 美女黄色免费网站| 日韩在线观看免费完整版视频| 日韩在线视频播放免费视频完整版| 日本视频免费观看| 国产成人无码免费看片软件| 中文字幕免费在线看线人动作大片| 三上悠亚电影全集免费| 国产偷伦视频免费观看| 一区二区三区观看免费中文视频在线播放 | 免费一级毛片在线播放放视频| 一道本在线免费视频| 黄桃AV无码免费一区二区三区|