формы оракула получают данные, которые находятся как в таблице, так и в многострочном блоке

У меня есть таблица, которая выглядит так

+-------+
|stud_id|
+-------+
|10     |
|13     |
|12     |
|11     |
|15     |
+-------+

и такой многострочный блок

введите здесь описание изображения

я хотел, чтобы, например, после нажатия кнопки, у меня есть значения 13,12,14 в моем многострочном блоке, появится сообщение, содержащее stud_id, который находится как в моей таблице, так и в многострочном блоке блока, который является числами 13 и 12, а не 14, потому что он не включен в мою таблицу.


person Miracle    schedule 07.02.2019    source источник


Ответы (1)


Я полагаю, табличная форма (та, что содержит несколько строк) основана на какой-то таблице. Назовем его FORM_TBL. Кроме того, предположим, что имя таблицы, содержащей опубликованные вами данные, называется STUD_TBL.

Простой вариант — опубликовать данные, введенные в форму (это означает, что они окажутся в таблице, но не будут зафиксированы, и никто, кроме вас, не увидит эти строки), а затем — используя оператор набора INTERSECT - найти общие значения. Это будет триггер WHEN-BUTTON-PRESSED:

declare
  retval varchar2(200);
begin
  post; 

  select listagg(stud_id, ',') within group (order by stud_id) 
  into retval
  from (select stud_id from stud_tbl
        intersect
        select s_id from form_tbl
      );

  message('Common values: ' || retval);
end;

Если ваша версия Forms не поддерживает LISTAGG, вы можете сделать это в цикле:

declare
  retval varchar2(200);
begin
  post; 

  for cur_r in (select stud_id from stud_tbl
                intersect
                select s_id from form_tbl
               )
  loop
    retval := retval ||', '|| cur_r.stud_id;
  end loop;
  message('Common values: ' || retval);
end;

В противном случае, если POST не удовлетворяет ваши потребности, вам придется перебрать все строки в форме и проверить, существуют ли они в STUD_TBL или нет.

person Littlefoot    schedule 07.02.2019
comment
Сэр, я думаю, что POST не удовлетворит мои потребности, потому что я использую некоторые автоматически сгенерированные значения в некоторых других столбцах моей таблицы. Я думаю, мне нужно использовать этот цикл для всех строк, а затем сравнить. Помогите мне, пожалуйста :( - person Miracle; 07.02.2019
comment
Я бы посоветовал вам не думать, а попробовать это. Это способ сделать это. - person Littlefoot; 07.02.2019