- - PR -
【S2DAO】SQL内のIFコメントの評価
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-01-11 20:58
いつもお世話になっております。
S2DAO 1.0.47で開発しております。 SQL内において、IFコメントを使ってWHERE句を設定しているのですが、 SELECT * FROM A WHERE KBN_A = '1' /*IF kbnb == '1'*/ AND A.KBN_B = '1' /*END*/ のように、バインド変数に対して==で条件を設定しても正常に動作しません( 変数kbnが'1'であってもIFブロック内の条件文が実行されない)。 これは私がやろうとしていることが間違っているのでしょうか? リファレンスでは 変数 != null のパターンしか掲載されていないですし。 どうかご教授のほど、宜しくお願いします。 |
|
投稿日時: 2008-01-11 22:26
変数名がkbnbとkbnになっているのでそれのせいではないのでしょうか?
daoクラスで設定している定義とあっているのでしょうか? |
|
投稿日時: 2008-01-12 00:54
すみません。転記ミスでした。変数はkbnです。
SELECT * FROM A WHERE KBN_A = '1' /*IF kbn == '1'*/ AND A.KBN_B = '1' /*END*/ となっています。 ためしにSELECT句に DECODE(/*kbn*/,'1','aho','boke') を記述するとトレースには DECODE('1','1','aho','boke') と出力されるので変数kbnの値は1なのですが、 IFコメントの中身は実行されません。 ちなみに、これとは別のSQLで /*IF kbn != ''*/ としているやつがあるのですが、 これはちゃんと評価されています。 さらに言うと、 AND /*IF kbn == '1'*/ A.KBN_B /*END*/ /*IF kbn == '2'*/ A.KBN_C /*END*/ ='1' というような、変数値によってWhere対象となる列を変化させたい場合(あんまりないです けど)、正常に動作されます。どう理解すれば良いのか困っております。。。 |
|
投稿日時: 2008-01-12 09:45
自己レスです。
/*IF kbn == "1"*/ のように変数の条件となる値(文字列)をダブルコーテーションで 囲ってやると正常に動作しました。 どうもお騒がせしました。 |
1