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

志水正幸 [E-MAIL ADDRESS DELETED]
2013年 10月 24日 (木) 19:23:17 JST


こんにちは。お世話になっています。
志水と申します。

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 メーリングリストの案内