LoginSignup
1
1

More than 5 years have passed since last update.

パラメータクエリで同じ値を複数回使用したい

Last updated at Posted at 2016-06-22

はじめに

毎度おなじみのダサダサ 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 はこんなことしなくても良かったです。同じプレイスホルダを使えば同じ引数が渡っていきました。


  1. これだけなら「名前付き」で解決できますが...。 

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1