如何根据Oracle 10g中的Condition执行两个查询之一?

时间:2011-10-31 13:15:07

标签: oracle oracle10g jdeveloper

我必须通过Oracle Adf中的ViewObject运行两个查询之一。它基于我可能会或可能不会输入组代码的条件。第一个查询在用户不输入任何参数时处理场景,第二个查询在用户输入组码时处理场景。根据用户是否输入参数,我必须运行以下查询。我将只使用一个View对象。

1.SELECT IIM.index_num         ,IIM.description 来自inv_item_mst IIM 在哪里IIM.group_cd IN(:GroupCode1,:GroupCode2,:GroupCode3,:GroupCode4,:GroupCode5,:GroupCode6,:GroupCode7) 和IIM.generic_cd LIKE NVL(:generic_cd_param,'%') 和IIM.supplier_cd像NVL(:supplier_cd_param,'%')

2.SELECT IIM.index_num         ,IIM.description 来自inv_item_mst IIM 在哪里IIM.group_cd =:groupCd

1 个答案:

答案 0 :(得分:1)

由于您从同一个表中选择相同的列,因此只需在WHERE子句中将语句与OR条件组合,检查是否存在: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,'%')
   )