【发布时间】:2021-04-23 15:07:37
【问题描述】:
我正在尝试在 Apex 中使用位于页面项 (:P10_SQL) 中的 SQL 语句生成交互式报告,例如:select 1 from 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
有人有想法吗?
【问题讨论】:
-
项目
P10_SQL有值吗?为什么不直接做return v('P10_SQL');甚至return :P10_SQL;? -
在调试问题时尝试
return nvl(:P10_SQL, 'select ''no value'' as col_header from dual');可能会有所帮助 -
我也试过 v('P10_SQL') 和 :P10_SQL 没有成功。页面项目中有一个值。它不是源数据库列,而是获取从另一个页面项粘贴的计算值。
-
你如何确定 P10_SQL 中有一个值?如果在页面上显示P10_SQL,查询是否出现?
-
你不应该在你的应用程序中使用 V() 函数。该函数适用于 apex 会话上下文中不存在的数据库对象 - 它比仅将应用程序作为绑定变量引用要慢得多(使用 :P10_SQL 而不是 V('P10_SQL')。
标签: oracle plsql report oracle-apex interactive