[seasar-dotnet:2330] Re: 2WaySQLの記述方法について

taknb2nch [E-MAIL ADDRESS DELETED]
2013年 10月 25日 (金) 00:07:27 JST


こんにちは、taknb2nchです。

私もどれが正解かと言われると自信がありませんが、
こちらにもありますように、
http://dbflute.net.sandbox.seasar.org/ja/introduction/index.html#methodinit
「外だしSQLのパラメータコメント上でのプロパティの参照は...注意が必要です。」
と書かれてあります。

またParameterBeanの定義については、
https://www.seasar.org/svn/sandbox/dbflute.net/trunk/dfnet-basic-example/source/DfExample/DBFlute/ExBhv/
のサンプル(sqlファイル)を見てみますと、
フィールド(メンバ変数)のように先頭は小文字で定義されています。

ですので私は、
ParameterBeanの定義は先頭小文字、
ParameterBeanのプロパティを参照する部分は先頭大文字、
を使用しています。



2013年10月24日 19:23 志水正幸 <ie2m-smz @ asahi-net.or.jp>:

> こんにちは。お世話になっています。
> 志水と申します。
>
> 2WaySQLの記述方法なのですが、
> よく、説明も読まずに作ってしまった私も悪いのですが、
> DBFLUTEの「パラメータコメント」では、両方とも小文字なんですよね〜。
> しかし別の書き方でも動くんです。
> でも、すこし書き方が違うと動かない場合もあるんです。
> 何が正式な記述方法なのか、よくわからなくなってしまいました。
> まぁ動いているっぽいのでイイと言えばそれまでなんですが・・・
> なんか気持ち悪いので、教えてください。
>
> 以下の<参考SQL>(適当なSQLなので構文おかしいかも)ような記述をして実行したところ、
> 条件部分の「pmb.misecd」に値を入れていても無視されている状態になりました。
> >>/*IF pmb.misecd != null*/T_SIWAKE.misecd_cd =
> /*pmb.misecd*/'110001'/*END*/
> 無視されているのでおかしいと思い、以下のように他の条件と同じようにpmb変数の頭文字を大文字に
> 変更したところ認識されるようになりました。
> >>/*IF pmb.Misecd != null*/T_SIWAKE.misecd_cd =
> /*pmb.Misecd*/'110001'/*END*/
>
> また、別のSQLでは、
> 下記のように宣言部分のpmb変数の頭文字も大文字で、且つ
> SQL内のpmb変数の頭文字も大文字の場合もうまく動作しています。
> -- !df:pmb extends Paging!
> -- !!String Misecd!!
> -- !!String Syubetucd!!
> -- !!String Nendo!!
>
>
> <結論>
> ・宣言部分は、頭文字は大文字でも小文字でも関係なし
> ・SQL条件内は、頭文字は大文字もしくは小文字でそろえないとダメ
> ⇒SQL条件内で混在はダメ
> ・宣言部分のpmb変数の頭文字が小文字でもSQL条件内でのpmb変数は大文字でもOK。
>  こんな感じだと思うのですが、どうでしょうか?
>
> 以上、宜しくお願いします。
>
>
> *--<参考SQL>---------------------------------------------------------------------------*
> -- #xxxxxxxxSQL#
>
> -- !df:pmb extends Paging!
> -- !!String misecd!!
> -- !!String syubetucd!!
> -- !!String nendo!!
>
> SELECT T_XXXXX.misecd, SUM(NVL(T_XXXXX.KIN,0)) AS KIN,
> SUM(NVL(T_XXXXX.TAX,0)) AS TAX
> ,TRUNC(T_XXXXX.TOROKU_YMD,'MM') AS TOROKU_YMD
>  FROM T_XXXXX
> /*BEGIN*/WHERE
> /*IF pmb.misecd != null*/T_SIWAKE.misecd_cd = /*pmb.misecd*/'110001'/*END*/
> /*IF pmb.Syubetucd != null*/AND T_XXXXX.kaikei_cd =
> /*pmb.Syubetucd*/'03'/*END*/
> /*IF pmb.Nendo != null*/AND T_XXXXX.nendo = /*pmb.Nendo*/'2013'/*END*/
> /*END*/
> GROUP BY T_XXXXX.misecd,TRUNC(T_XXXXX.TOROKU_YMD,'MM')
> ORDER BY T_XXXXX.misecd,TRUNC(T_XXXXX.TOROKU_YMD,'MM')
>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20131025/a8748426/attachment.html>


seasar-dotnet メーリングリストの案内