Могу ли я вставить значение, используя «где»

#oracle #oracle-apex #oracle-apex-5.1

#Oracle #oracle-apex #oracle-apex-5.1

Вопрос:

могу ли я использовать

вставить в (таблицу) значения (xyz), где (xzy)

Я вставляю значения на основе выбранного флажка

 begin
  for idx in 1 .. apex_application.g_f01.count
  loop
    if apex_application.g_f01(idx) is not null then
       insert into CONSOLIDATE
         (filenumber, 
          INCOMINGDATE,
          filename
         )
         values
         (apex_application.g_f01(idx),
          apex_application.g_f03(idx),
          apex_application.g_f04(idx)


         );
    end if;
  end loop;
end;
  

который отлично работает .. но теперь я хочу использовать where Temporary =’yes’ в этом утверждении..

Я знаю, что вы можете использовать insert into (выберите x, y, z), где (xyz) но я хочу конкретные значения из флажка..

Комментарии:

1. Что Temporary здесь означает? Это другое значение флажка / formfield? Если да, вы хотели бы проверить это в if инструкции над insert и либо выполнить, либо не выполнять insert на основе этого значения, верно?

2. временное — это поле

3. Похоже, у вас XY-проблема .

Ответ №1:

Нет, вы не можете использовать WHERE , но вы можете использовать CASE , например

 values
     (case when apex_application.g_f01(idx) in ('A', 'B', 'C') then apex_application.g_f01(idx)
           else null
      end,
      apex_application.g_f01(idx),
      ...
  

Ответ №2:

Пожалуйста, попробуйте это, просто установите значения вашего флажка в dual и при необходимости примените условие where

 begin
  for idx in 1 .. apex_application.g_f01.count
  loop
    if apex_application.g_f01(idx) is not null then
       insert into CONSOLIDATE
         (filenumber, 
          INCOMINGDATE,
          filename
         )
         SELECT
          apex_application.g_f01(idx),
          apex_application.g_f03(idx),
          apex_application.g_f04(idx)
         FROM DUAL
         WHERE apex_application.g_f01(idx) = 'XYZ'  ;
    end if;
  end loop;
end;