[Seasar-user:5997] Re: Re :[DBFlute] 外だし SQL のPAGINGについて

kubo [E-MAIL ADDRESS DELETED]
2007年 2月 1日 (木) 22:27:36 JST


久保です。

> ご指摘ありがとうございます。
> 外だしSQL内にPaging検索用の条件を記述するということですね。
> 通常の外だしSQLを記述していました。。それが原因のようですね。
> 
> ORACLEにおける外だしSQLPagingの方法がありましたら、ご教授よろしく
> お願い致します。

取り急ぎ、Oracleの例を更新しました。
http://dbflute.sandbox.seasar.org/ja/tips-paging.html

    ex) PagingのSQL{Oracleの場合}
    /- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    select *
      from (select BOOK_ID, BOOK_NAME, ...
              from BOOK
             where ...(色々複雑な条件...)
           ) book
     where rownum > /*$pb.pageStartIndex*/80
       and rownum <= /*$pb.pageEndIndex*/100
    - - - - - -/

別に上記のような書き方ではなく、between構文を使ったりとかは自由です。
PagingBeanが提供するのは「計算されたPagingのためのIndexやSize」
です。極論、外だしSQLの場合はそれをどのように利用しても構わないのです。

やろうと思えばResultSetの弾きだけで、DBに関係なく
Pagingは可能なのですが、DB自体(SQL)に絞込みの機能がある
場合が、そちらを必ず利用するような方針を採っています。
ちょっと面倒かと思われるかもしれませんが、
Performanceを考えた場合、これが最良だと考えた次第であります。



> /*BEGIN*/where
>  /*IF pmb.findGyotai != null*/substr(KAISYACD, 5, 1) = /*pmb.findGyotai*/'1'/*END*/

ああ、確かに関数を条件利用するとなると外だしSQLとなりますね。。。
(ConditionBeanは関数はサポートしていないため)



-- 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
kubo   <[E-MAIL ADDRESS DELETED]>
jflute <http://d.hatena.ne.jp/jflute>
株式会社ビルドシステム <http://www.buildsystem.co.jp>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/





Seasar-user メーリングリストの案内