Как я могу создать динамический оператор WHERE для Oracle - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно иметь возможность динамически изменять часть WHERE на основе переданной переменной. например

SELECT item,description
FROM TABLE WHERE department = :department

Я пытаюсь сделать, если переданная переменная равна 'NY', тогда я хочу запросить состояния в CT, NJ и NY, но если переменная 'CA', тогда просто запросить CA. Могу ли я использовать оператор CASE WHEN в части WHERE?

Я не могу использовать SP или курсоры, просто запросить.

Ответы [ 3 ]

2 голосов
/ 01 мая 2019

Это было бы

where (department in ('CT', 'NJ', 'NY') and :department = 'NY')
   or (department = 'CA'                and :department = 'CA')
0 голосов
/ 02 мая 2019

Вы также можете попробовать это,

INSTR (DECODE (: отдел, 'CA', 'CA', 'NY', 'CT, NJ, NY'), отдел)> 0

0 голосов
/ 01 мая 2019

Я считаю, что логика, которую вы хотите, это:

where (department in ('CT', 'NJ', 'NY') and :department = 'NY') or
      (department = :department)

Это должно работать для любого состояния, а не только для четырех перечисленных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...