带有动态 sql 语句的交互式报告

interactive report with dynamic sql statement

我正在尝试在 Apex 中生成交互式报告,其中包含位于页面项目 (:P10_SQL) 中的 SQL-语句,例如:select 1来自 dual.

declare
 l_sql VARCHAR2(4000 CHAR); 
Begin
select V('P10_SQL') into l_sql from dual;
return l_sql;
End;

报表的类型为 PL/SQL 返回 SQL 查询的函数体。 Apex 显示错误 ORA-20999: WWV_FLOW_EXEC.NULL_QUERY_RETURNED_BY_FUNCTION

有人有想法吗?

Apex 有点 疯狂 因为它并不总是想接受我写的代码(这是完全有效的),说函数不 return任何事物。好吧。

所以我的returns SQL查询的函数是分阶段写的。以下项目符号代表我所做的尝试;他们都很好。最终版本 - 现在运行的版本与 return :P77_SQL; 一样简单(我在第 77 页)

  • return 'select dummy from dual'
    
  • declare
      l_str varchar2(4000);
    begin
      l_str := case when :P77_SQL is null then 'select dummy from dual'
                    else :P77_SQL
               end;
      return l_str;
    end;
    
  • return :P77_SQL;
    

但是:您不能使用交互式报告,必须是经典报告,因为并非所有作为源的表都具有相同的列名(除非您使用别名并匹配数字和数据类型,这相当复杂)。

但是,如果您使用经典报告,则打开“使用通用列名”并设置所需的通用列数(我将其设置为 10;您会知道在您的情况下该怎么做)。

我的 P77_SQL 文本项在我按 ENTER 时提交页面,这导致报告刷新。

举几个例子: