Oracle Apex 5.0: заполните IR с предложением WHERE IN на основе элемента страницы - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь настроить страницу, которая содержит:

  • элемент страницы ( P16_INPUT ), куда пользователи вставляют список идентификаторов (в отдельных строках)
  • интерактивный отчет ( вывод ), который должен заполняться на основе идентификаторов

Для этого я добавил промежуточный скрытый элемент страницы ( 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'

Динамическое действие также обновляет вывод 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);

Но я всегда получаю пустой стол.

Если я введу только 1 идентификатор в P16_INPUT и пропущу промежуточное значение P16_INPUT_INTERMEDIATE , IR правильно заполнится 1 строкой результатов.

1 Ответ

0 голосов
/ 25 марта 2019

Я не уверен, как именно это сделать, так как я с ним много не работал, но то, что вы пытаетесь сделать, это динамический SQL, SQL-запрос, который компилируется во время выполнения.Гл с этим

...