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