如何在 Oracle 10g 中根据条件执行两个查询之一?

发布于 2024-12-13 09:47:25 字数 517 浏览 2 评论 0原文

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

1.选择IIM.index_num ,IIM.描述 来自 inv_item_mst IIM WHERE 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.SELECT IIM.index_num ,IIM.描述 来自 inv_item_mst IIM WHERE IIM.group_cd =:groupCd

I have to run one of the two queries through a ViewObject in Oracle Adf. It's based on a condition that I may or may not enter a group Code. The first query handles the scenario when the user will not input any parameters and the second query handles the scenario when user inputs a Group Code. depending on whether user inputs parameter or not, I have to run on the following queries. I will be using only one View Object.

1.SELECT IIM.index_num
,IIM.description
FROM inv_item_mst IIM
WHERE 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.SELECT IIM.index_num
,IIM.description
FROM inv_item_mst IIM
WHERE IIM.group_cd =:groupCd

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘴硬脾气大 2024-12-20 09:47:25

由于您从同一个表中选择相同的列,只需将语句与 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,'%')
   )

Since you are selecting the same columns from the same table just combine the statements with an OR condition in the WHERE clause checking if the :groupCd value is present:

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,'%')
   )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文