はじめに
毎度おなじみのダサダサ Tips です。
※追記:ダサいと思ったのですが、デバッグに便利だったため多用しています。
- パラメータクエリ内で同じ値を複数回使用するのに、同じ値を複数回引数で渡すのはバカバカしい。
- クエリ内から
?
を探すのがたいへん。 - 渡す順番を間違えそうなくらい 1 クエリが複雑になってしまった。
そんなときは設計しなおしたほうが...以下のように共通テーブル式で変数みたいなものを作って使います。
サンプル
WITH Params AS (
SELECT
? AS keyDate -- <- パラメータクエリに渡す引数はこれだけ
FROM DUAL
)
SELECT
EventName
FROM EventsSchedule, Params
WHERE 1=1
AND StartDate <= Params.keyDate -- <- ここと...
AND Params.keyDate <= EndDate -- <- ここで使っています
おわりに
.NET + Oracle のハナシです。
絶対になんか他のやり方があるような気がしていろいろ試したのですがうまくいかなかったので...。ご存知のかた、いらっしゃいますか?
PHP + PostgreSQL はこんなことしなくても良かったです。同じプレイスホルダを使えば同じ引数が渡っていきました。
-
これだけなら「名前付き」で解決できますが...。 ↩