我正在使用 Oracle Database 19c 企业版版本 19.0.0.0.0 - 生产 版本 19.22.0.0.0,产品版本 20.1.0.00.13
我有一个名为 P2_METRIC_NAME 的选择列表。 它是表中的字段列表。 我想在图表的选择列表中的求和函数中使用它。 所以,它会是:
select null link,
to_char(dwh_xdate, 'Mon YYYY'),
sum(&P2_METRIC_NAME.)
from core_performance_output_t
where dwh_xdate >= :p0_date
group by dwh_xdate
order by dwh_xdate
因此,如果用户从选择列表中选择“NET_OUTSTANDINGS”,则查询应解释为:
select null link,
to_char(dwh_xdate, 'Mon YYYY'),
sum(NET_OUTSTANDINGS)
from core_performance_output_t
where dwh_xdate >= :p0_date
group by dwh_xdate
order by dwh_xdate
我尝试过使用&P2_METRIC_NAME。和:P2_METRIC_NAME。 附件是我使用“SUM(&P2_METRIC_NAME)”时遇到的错误。 我觉得我在这个错误上走在正确的轨道上,但不太确定下一步要尝试什么。
还有一点可能相关或不相关的信息::P2_METRIC_NAME 的选择列表是一个查询:
select column_name d, column_name r
from all_tab_columns
where table_name = 'CORE_PERFORMANCE_OUTPUT_T'
and column_name not in ('METRIC','METRIC_NAME','DWH_XDATE')
group by column_name
order by 1
这是一个基于 Scott 示例模式(其
emp
表)的简单示例。
我创建了名为
P2_COLUMN
的选择列表页面项目,它显示 emp
表中的列。当值更改时它会提交页面。
然后,我创建了一个存储函数,它返回代表图表源的查询:
create or replace function f_col (par_column in varchar2) return varchar2 is
retval varchar2(1000);
begin
retval := 'select deptno, sum(&P2_COLUMN.) val from emp group by deptno';
return retval;
end;
/
图表区域的来源是返回 SQL 查询的函数体:
return f_col(':P2_COLUMN');
结果是 - 对于两个样本列:
我觉得还不错。
如果你问
为什么我不直接在 Apex 中返回该查询,即使用这个:
return 'select deptno, sum(&P2_COLUMN.) val from emp group by deptno';
作为区域来源
答案是:因为你会得到
ORA-20999:解析返回的查询结果为“ORA-20999:无法解析 SQL 查询!ORA-06550:第 4 行,第 4 列:ORA-00909:参数数量无效”。
错误。为什么?不知道,我没那么聪明。