SQL 上的动态列不起作用(APEX、交互式报告)

Dynamic Column on SQL doesn't work (APEX,Interactive Report)

我尝试在 APEX(19.2) 上实现一个页面,用户必须在其中输入一个列名。此输入应限制 where 子句上的 select 语句,如下所示:

select * FROM UEBERSICHT where
:P904_COLUMN = :P904_AUSDRUCK;

:P904_COLUMN 和:P904_AUSDRUCK;都是 APEX 项目,用户输入需要这些项目。

当我写列名而不是 :P904_COLUMN 时,我会得到一个输出,否则不会。 但是正如标题所说,我想实现一个动态列。

我也用 PL/SQL 尝试过,其中 returns 一个 SQL - 如下语句:

declare
statement varchar2(4000);

begin


statement:= 'SELECT * FROM UEBERSICHT where
 :P904_COLUMN = :P904_AUSDRUCK;';

return statement;
end;

另一种方法是,先将输入保存在一个变量上,然后将变量名写入 SQL - 语句:

 declare
statement varchar2(4000);
spalte varchar2(50);
begin

if :P904_COLUMN = '"Gesellschaft"' then spalte := '"Gesellschaft"'; end if;    
statement:= 'SELECT * FROM UEBERSICHT where
 '||spalte||' = :P904_AUSDRUCK;';

return statement;
end;

这里我得到了这个语法错误,它通常不应该出现:"ORA-20999: Parsing returned query results in "ORA-20999: 无法解析 SQL 查询!

ORA-06550:第 5 行,第 6 列:ORA-00936:缺少表达式

”。”

我该如何解决这个问题?

PS:是的,我正在提交所有 APEX 项目。

更新:调试显示我得到了输入,但是交互式报告没有给我任何输出。

如果 :P904_COLUMN 中的所有列都是 same data type 您可以使用类似下面的内容,其中 AB 是列名

 select * FROM UEBERSICHT where
 DECODE(:P904_COLUMN,'A',A,'B',B) = :P904_AUSDRUCK;