2 требования: 1) заменить несколько циклов FOR на FORALL 2) использовать условие IF-THEN-ELSE при вставке данных в таблицу

Мое требование немного другое. У меня есть два вложенных цикла FOR, которые извлекают данные и в зависимости от определенных условий вставляют отсортированные данные в таблицу.

Оригинальный код ниже:

FOR Name_1 IN First_Cursor
LOOP
  FOR Name_2 IN Second_Cursor (Name_1.Table_Field_Name)
  LOOP
    IF (Condition)
      THEN
        Prevalidation of data

        INSERT INTO <Table_Name>
          VALUES (..............................);
      ELSE
        IF (Condition)
        THEN
          Prevalidation of data

          UPDATE <Table_Name>
            WHERE .....................;

      END IF;
    END IF;
  END LOOP;
END LOOP;

Я должен преобразовать весь этот код в FORALL

Я перепробовал много кода, но dint преуспел в любом, я думаю, что сам синтаксис неправильный

IF (Condition)
THEN
  Prevalidation of data

  FORALL Name_2 IN Second_Cursor (Name_1.Table_Field_Name) of Name_1
    INSERT INTO <Table_Name>
      VALUES (..............................);
ELSE
  IF (Condition)
  THEN
    Prevalidation of data
    FORALL Name_2 IN Second_Cursor (Name_1.Table_Field_Name) of Name_1
      UPDATE <Table_Name>
        WHERE .....................;    
  END IF;
END IF;

1 ответ

Решение

Пожалуйста, используйте "case" заявление в sql выглядит так:

синтаксис:

CASE [ expression ]

   WHEN condition_1 THEN result_1
   WHEN condition_2 THEN result_2
   ...
   WHEN condition_n THEN result_n

   ELSE result

END

SQL:

 select column1,column2,
    ( case when col3>0 then col4 else col5 end) as 'col_name' ,
    ( case when col6='value' then col7 else col8 end) as 'col_name1' 
    from 
    table_name
    where col_name13>45
Другие вопросы по тегам