Используйте оператор MERGE.
Вот пример:
MERGE INTO workers e
USING data_works h -- You can use the SELECT statement as well.
ON (e.f_id= h.f_id)
WHEN MATCHED THEN
UPDATE SET e.address= h.address
WHEN NOT MATCHED THEN
INSERT (f_id, address)
VALUES (h.f_id, h.address);
Вот ваш код. Надеюсь, это сработает.
MERGE INTO web_fe_ipo_ipo_application apps
USING (SELECT * FROM web_fe_ipo_ipo_entry ipo ORDER BY
ipo_random)
ON(apps.ipo_link_id = ipo.ipo_ref_number)
WHEN MATCHED THEN
UPDATE SET apps.initial_allot_qty = 5
WHERE apps.status = 0
OR(apps.status = 2
AND apps.sub_status = 0
AND ipo.enable_omnibus_account = 1)
AND apps.applied_qty BETWEEN 1 AND 10
AND apps.ipo_link_id = '984'
AND apps.latest = 1
AND ipo.latest = 1
AND apps.tranche_name = 'Public-1'
AND rownum <=5;
Используйте инструкцию MERGE для выбора строк из одного или нескольких источников для операций INSERT или UPDATE в таблице или представлении.
Вы можете указать условия, чтобы определить, является ли целевая таблица или представлениеобновляется.
Операция слияния - это удобный способ объединения нескольких операций. Это также позволяет избежать нескольких операторов INSERT, UPDATE и DELETE DML.