1

私はこのようなものが欲しいです

condition := case {SOME_VAR}
  when 1 then 'tbl.id = 3 and tbl.code = 6'
  when 2 then 'tbl.id != 4 and tbl.code = 5'
  when 3 then 'tbl.id = 2 and tbl.code != 7'
  else '1 = 1'
end

select
  *
from
  some_table tbl
where
  $condition
;

マクロ置換のようなもので、節の$condition上にある対応する SQL コードに置き換えられます。selectこれはオラクルで可能ですか?

4

2 に答える 2

0

特にOracleについてはわかりませんがSQL、一般的には、はい、いいえです。

あなたが求めていることを正確に行うことはできませんが、引用した特定のケースでは、行うことができます

SELECT *
FROM some_table tbl
WHERE tbl.id = CASE {some_var} WHEN 1 THEN 3
                               WHEN 2 THEN 4
                               WHEN 3 THEN 2
                               ELSE tbl.id END
AND tbl.code = CASE {some_var} WHEN 1 THEN 6
                               WHEN 2 THEN 5
                               WHEN 3 THEN 7
                               ELSE tbl.code END
于 2013-06-04T15:29:27.690 に答える
0
select
  *
from
  some_table tbl
where
  SOME_VAR = 1 and tbl.id = 3 and tbl.code = 6 or
  SOME_VAR = 2 and tbl.id != 4 and tbl.code = 5 or
  SOME_VAR = 3 and tbl.id = 2 and tbl.code != 7
于 2013-06-04T16:23:10.957 に答える