【问题标题】:Using PL/SQL block with an interactive grid (Oracle Apex)使用带有交互式网格的 PL/SQL 块 (Oracle Apex)
【发布时间】:2018-03-05 08:54:37
【问题描述】:

如何在交互式网格中使用这样的 plsql 代码块(使用 Oracle Apex):

begin
     Query A;
exception when no_data_found then
     Query B;
end;

实际上,有时“查询 A”什么也不返回,而我想运行“查询 B”。有什么解决办法吗?

【问题讨论】:

  • 你是对的。我忘了解释我使用的是 oracle Apex!
  • 在我发表评论后,我注意到您已将问题标记为 [apex] 。我本来想删除我的评论,因为我分心了。 ;-) 尽管如此,更清晰只是一件好事。
  • @Professor,与交互式报告相比,您认为使用交互式网格有什么优势? (顺便说一句,我在这种情况下的选择是 UNION,正如@kara 所建议的那样)。

标签: oracle plsql oracle-apex


【解决方案1】:

交互式网格必须使用 sql 查询作为源。

一个。编写一个查询并使用 sql-query 作为源:

SELECT * FROM A
UNION ALL
SELECT * FROM B WHERE COUNT(SELECT * FROM A) = 0;

b.编写一些可以完成工作的函数

阅读: How to return a resultset / cursor from a Oracle PL/SQL anonymous block that executes Dynamic SQL?

但这听起来有点奇怪,你有两个数据源的一个网格。这会在操作数据时带来一些问题。

开放式问题

  • 您要修改数据吗?
  • 是否要插入新行?
  • 用户是否了解正在发生的事情以及他所看到的内容?

【讨论】:

  • 这些不一定是两个不同的数据源,而是两个不同的查询。有什么不同?我们不知道;也许只是一个 WHERE 子句...
  • Tnx 但正如你所说,这有点奇怪。交互式网格是否有任何异常处理?并回答:不,我不想修改数据。不会插入任何行。是的,用户明白所有,他会看到所有的过程。
  • 你好小脚。查询非常大。我真正想要的是在 no_data_found 发生时使用交互式网格进行异常处理。
  • 如果您使用的是interactive grid,您必须通过查询传递数据。
  • 可能在同一页面上有两个网格,在显示一个或另一个时设置。 (一页可以有两个网格吗?)
【解决方案2】:

由于没有明显的方法不使用 SQL 查询作为交互式网格源,您可能(取决于您的具体解决方案)有不同的想法并为每个查询创建一个交互式网格区域。然后,您可以在页面加载时显示一个或另一个,使用区域服务器端条件甚至动态操作。

【讨论】:

    【解决方案3】:

    为了稍微具体地扩展其他答案,因为这是关于管理 2 个不同查询的结果,您可以将 2 个不同的查询放在 2 个不同的 Grid 区域中。然后在第一个区域添加“返回的行”的服务器端条件并将 SQL 查询复制到提供的查询输入中。在第二个区域,您将设置“No Rows returned”条件并再次将查询 1 复制到提供的 SQL 输入中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多