我必须通过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
答案 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,'%')
)