Чудесен начин да актуализирате таблица от заявка е да използвате оператор MERGE. Ето пример, който копира all_objects и добавя колона с броя на обектите, които съответстват на собственика и типа на този ред.
CREATE TABLE all_objects_2 AS
SELECT *
FROM all_objects;
ALTER TABLE all_objects_2 add owner_and_type_ct NUMBER;
MERGE INTO all_objects_2 ao2
USING (SELECT ao.owner,
ao.object_type,
COUNT(*) AS ct
FROM all_objects ao
GROUP BY ao.owner,
ao.object_type) x
ON (ao2.owner = x.owner AND ao2.object_type = x.object_type)
WHEN MATCHED THEN
UPDATE
SET ao2.owner_and_type_ct = x.ct;
SELECT ao2.owner,
ao2.object_name,
ao2.object_type,
ao2.owner_and_type_ct
FROM all_objects_2 ao2
WHERE rownum < 10;
/*
SYS C_TS# CLUSTER 10
SYS I_TS# INDEX 1459
SYS C_FILE#_BLOCK# CLUSTER 10
SYS I_FILE#_BLOCK# INDEX 1459
SYS FET$ TABLE 1592
SYS UET$ TABLE 1592
SYS SEG$ TABLE 1592
SYS UNDO$ TABLE 1592
SYS TS$ TABLE 1592
*/
Вие се СЛИВАТЕ В [таблица на местоназначение], ИЗПОЛЗВАЙТЕ [вашата заявка] НА [критерии за присъединяване на заявка към местоназначение] и КОГАТО СЪВМЕСТИТЕ ред, вие АКТУАЛИЗИРАТЕ реда със стойностите от заявката. Можете също да INSERT и DELETE с MERGE, но няма да дублирам всички документация .