Możesz to zrobić za pomocą error_logging_clause . (Link dotyczy wstawki, ponieważ w dokumentacji POŁĄCZ mówi, że zachowuje się tak samo jak wstawka.
W Twoim przypadku :
-- You create your Log Table
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('copy_emp', 'TAB_ERR_COPY_EMP');
MERGE INTO copy_emp c
USING employees e
ON (c.employee_id = e.employee_id)
WHEN MATCHED THEN
UPDATE SET
c.first_name = e.first_name,
c.last_name = e.last_name,
c.email = e.email,
c.phone_number = e.phone_number,
c.hire_date = e.hire_date,
c.job_id = e.job_id,
c.salary = e.salary,
c.commission_pct = e.commission_pct,
c.manager_id = e.manager_id,
c.department_id = e.department_id
WHEN NOT MATCHED THEN
INSERT VALUES(e.employee_id, e.first_name, e.last_name,
e.email, e.phone_number, e.hire_date, e.job_id,
e.salary, e.commission_pct, e.manager_id,
e.department_id)
LOG ERRORS INTO TAB_ERR_COPY_EMP('TAG_STATEMENT') REJECT LIMIT 100;
Pamiętaj, że istnieją pewne ograniczenia dotyczące klauzuli error_logging_. Z dokumentacji :
-
Następujące warunki powodują niepowodzenie instrukcji i wycofanie jej bez wywołania funkcji rejestrowania błędów:
-
Naruszono odroczone ograniczenia.
-
Dowolna operacja INSERT lub MERGE na ścieżce bezpośredniej, która powoduje naruszenie ograniczenia unikatowego lub naruszenia indeksu.
-
Każda operacja aktualizacji UPDATE lub MERGE, która powoduje naruszenie indeksu unikatowego elementu ograniczającego).
-
-
Nie można śledzić błędów w tabeli rejestrowania błędów dla kolumn typu LONG, LOB lub orobject. Jednak tabela, która jest celem operacji DML, może zawierać tego typu kolumny.
-
Jeśli utworzysz lub zmodyfikujesz odpowiednią tabelę rejestrowania błędów tak, aby zawierała kolumnę nieobsługiwanego typu, a nazwa tej kolumny odpowiada nieobsługiwanej kolumnie w docelowej tabeli DML, instrukcja DML nie powiedzie się podczas analizy.
-
Jeśli tabela rejestrowania błędów nie zawiera żadnych nieobsługiwanych typów kolumn, wszystkie błędy DML są rejestrowane do momentu osiągnięcia limitu odrzucenia błędów. W przypadku wierszy, w których występują błędy, wartości kolumn z odpowiednimi kolumnami w tabeli rejestrowania błędów są rejestrowane wraz z informacjami kontrolnymi.
-