Oracle Apex:如何执行程序并在页面上显示结果

Posted

技术标签:

【中文标题】Oracle Apex:如何执行程序并在页面上显示结果【英文标题】:Oracle Apex : How to execute procedure and display the results on a page 【发布时间】:2020-12-21 04:11:06 【问题描述】:

我有一个动态将应用程序 ID 作为输入并根据应用程序 ID 显示结果的过程。

如果:

exec get_app_data(11);

结果是:

A   B   C

1   2   3
1   2   3

如果:

exec get_app_data(12);

D   E   F

1   2   3
1   2   3

所以基本上它满足了动态改变列标题和显示动态视图的需求。

现在如何将此过程添加到 oracle apex 页面? 我知道它会首先添加为执行的页面进程,但是由于结果是动态的并且在运行时,我如何显示结果呢?

编辑:为了更清楚,这是正在执行的过程:

【问题讨论】:

【参考方案1】:

考虑使用经典报表类型的区域,其源基于返回 SQL 查询的 PL/SQL 函数体。

然后,您可以通过删除光标内容并让参数基于页面项目来简化代码。也许是这样的:

declare
    l_query varchar2(4000);
begin
    SELECT 'SELECT  *' || CHR(10) ||
           '  FROM  DATA_VALUE' || CHR(10) ||
           '  PIVOT(' || CHR(10) ||
           '        MAX(VAL)' || CHR(10) ||
           '        FOR SEQ IN (' || CHR(10) ||
           '                    ' || LISTAGG(
                                             SEQ || ' "' || LABEL || '"',
                                             ',' || CHR(10) ||'                    '
                                            )
                                     WITHIN GROUP(ORDER BY SEQ) || CHR(10) ||
           '                   )' || CHR(10) ||
           '       )' || CHR(10) ||
           '  WHERE APP_ID = ' || APP_ID
      INTO l_query
      FROM DATA_HEADER
     WHERE APP_ID = :P1_APP_ID
     GROUP BY APP_ID;

    return l_query;
end;

【讨论】:

我试过了,当我将它保存在源中时抛出错误:找不到数据 1) 确保页面项目已正确填充。如果它为空,您可能会收到此错误。 2) 尝试在 debug LEVEL9 中运行页面,然后检查日志。您应该会看到 APEX 正在运行的最终查询。也许它有助于查明错误。

以上是关于Oracle Apex:如何执行程序并在页面上显示结果的主要内容,如果未能解决你的问题,请参考以下文章

使用页面项目值在 oracle apex 中搜索经典报告

oracle apex 只刷新一个区域而不是整个页面

Oracle Apex:如何计算主从表单上的详细记录

Oracle apex 在特定图像上写入和修改

在 Oracle APEX 交互式报表中更新与过滤器相关的页面项目

从 excel 自动加载 Oracle Apex 数据