【发布时间】:2020-04-24 11:54:34
【问题描述】:
我尝试在 APEX(19.2) 上实现一个页面,用户必须在其中进行输入,即列名。此输入应限制 where 子句上的 select 语句,如下所示:
select * FROM UEBERSICHT where
:P904_COLUMN = :P904_AUSDRUCK;
:P904_COLUMN 和 :P904_AUSDRUCK;都是 APEX 项,是用户输入所需要的。
当我写列名而不是:P904_COLUMN 时,我得到一个输出,否则没有。 但正如标题所说,我想实现一个动态列。
我也尝试过使用 PL/SQL ,它返回如下 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: Failed to parse SQL query!
ORA-06550:第 5 行,第 6 列:ORA-00936:缺少表达式
“。”我该如何解决这个问题?
PS:是的,我正在提交所有 APEX 项目。
更新:调试显示我得到了输入,但交互式报告没有给我任何输出。
【问题讨论】:
标签: sql oracle report oracle-apex