Oracle Apex 5.0:根据页面项目使用WHERE IN子句填充IR

时间:2019-03-22 10:07:16

标签: sql plsql oracle-apex

我试图建立一个包含以下内容的页面:

  • 页面项目( P16_INPUT ),用户在其中粘贴ID列表(在单独的行上)
  • 应基于ID填充的交互式报告(输出

为实现这一点,我添加了一个中间的隐藏页面项( P16_INPUT_INTERMEDIATE ),在其中我将输入文本(在不同行上)转换为用单引号引起的逗号分隔文本字符串。

示例: 用户输入 P16_INPUT
RTR123
RTR456

动态操作会调用一个(过于复杂的)PL / SQL表达式,该表达式填充 P16_INPUT_INTERMEDIATE

declare
l_in varchar(4000);
l_int varchar(4000);
l_out varchar(4000);
begin 
l_in := :P16_INPUT;
l_int := replace(l_in,Chr(13),''',''');
l_out := '''' || l_int || '''';
l_out := replace(l_out,Chr(10));
l_out := replace(l_out,Chr(9));
:P16_INPUT_INTERMEDIATE := l_out;
end;

产生: 'RTR123','RTR456'

动态操作还会刷新 output IR,该IR基于以下SQL语句:

 select t1.id ,t1.b_seq , t1.s_seq, t1.back_seq
          from v_export t1
         where t1.id in (:P16_INPUT_INTERMEDIATE);

但是我总是回到一个空表。

如果我仅在 P16_INPUT 中输入1个ID,而跳过中间的 P16_INPUT_INTERMEDIATE ,则IR将正确填充1行结果。

1 个答案:

答案 0 :(得分:0)

由于我还没有做很多事情,所以不确定如何确切地执行此操作,但是您要尝试执行的是动态SQL,即在运行时编译的SQL查询。 GL