08/04/01 19:02:34
>>722
sWhere = " WHERE a.colx = '" + 画面.xx + "'";
if (画面.yy != 未入力){
sWhere += " AND a.coly = '" + 画面.yy + "'";
}
if (画面.zz != 未入力){
sWhere += " AND EXISTS (SELECT * FROM TABLE b ";
sWhere += " WHERE a.key = b.key";
sWhere += " AND b.colz = '" + 画面.zz + "')";
}
ってなコーディングは山ほど見たな… 吐きそう …オェ~
もっとへたくそは " AND "がいるか判定してたり…orz
これはこうなるべ。
sWhere = " WHERE
sWhere += " a.colx = :parX";
sWhere += " AND (a.coly = :parY OR :parY IS NULL) ";
sWhere += " AND (EXISTS "
sWhere += " (SELECT * FROM TABLE b ";
sWhere += " WHERE a.key = b.key";
sWhere += " AND b.colz = :parZ)";
sWhere += " OR :parZ IS NULL";
sWhere += " )";
良く見ろよ。
固定のSQLじゃないか?(ストアドにした方がすっきりするべ)
動的SQL(コストベース)なら coly も、インデックスが
存在して効率的なら使われるんだな。