Как выполнить один из двух запросов на основе условия в Oracle 10g? - PullRequest
0 голосов
/ 31 октября 2011

Мне нужно выполнить один из двух запросов через ViewObject в Oracle Adf. Это основано на условии, что я могу или не могу ввести код группы. Первый запрос обрабатывает сценарий, когда пользователь не будет вводить какие-либо параметры, а второй запрос обрабатывает сценарий, когда пользователь вводит групповой код. В зависимости от того, введен ли пользовательский параметр или нет, я должен выполнить следующие запросы. Я буду использовать только один объект просмотра.

1. ВЫБРАТЬ IIM.index_num , IIM.description ОТ inv_item_mst IIM ГДЕ IIM.group_cd IN (: GroupCode1,: GroupCode2,: GroupCode3,: GroupCode4,: GroupCode5,: GroupCode6,: GroupCode7) AND IIM.generic_cd LIKE NVL (: generic_cd_param, '%') AND IIM.supplier_cd LIKE NVL (: supplier_cd_param, '%')

2. ВЫБРАТЬ IIM.index_num , IIM.description ОТ inv_item_mst IIM ГДЕ IIM.group_cd =: groupCd

1 Ответ

1 голос
/ 31 октября 2011

Поскольку вы выбираете одинаковые столбцы из одной и той же таблицы, просто объедините операторы с условием ИЛИ в предложении WHERE, проверяя, присутствует ли значение : groupCd :

SELECT IIM.index_num, IIM.description
FROM inv_item_mst IIM
WHERE (:groupCd IS NOT NULL AND IIM.group_cd =:groupCd)
OR (:groupCd IS NULL AND
    IIM.group_cd IN (:GroupCode1,:GroupCode2,:GroupCode3,:GroupCode4,:GroupCode5,:GroupCode6,:GroupCode7)
    AND IIM.generic_cd LIKE NVL(:generic_cd_param,'%')
    AND IIM.supplier_cd LIKE NVL(:supplier_cd_param,'%')
   )
...