Anda dapat melakukannya dengan error_logging_clause . (Tautan untuk penyisipan karena dalam dokumentasi GABUNG dikatakan memiliki perilaku yang sama dengan sisipan.
Untuk kasus Anda :
-- 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;
Harap dicatat bahwa ada beberapa batasan untuk error_logging_clause. Dari dokumentasi :
-
Kondisi berikut menyebabkan pernyataan gagal dan memutar kembali tanpa menggunakan kemampuan pencatatan kesalahan:
-
Melanggar batasan yang ditangguhkan.
-
Setiap operasi INSERT atau MERGE jalur langsung yang menimbulkan batasan unik atau pelanggaran indeks.
-
Setiap operasi pembaruan UPDATE atau MERGE yang menimbulkan pelanggaran indeks kendala unik).
-
-
Anda tidak dapat melacak kesalahan dalam tabel pencatatan kesalahan untuk kolom LONG, LOB, atau tipe objek. Namun, tabel yang menjadi target operasi DML dapat berisi jenis kolom ini.
-
Jika Anda membuat atau memodifikasi tabel logging kesalahan yang sesuai sehingga berisi kolom dengan jenis yang tidak didukung, dan jika nama kolom tersebut sesuai dengan kolom yang tidak didukung dalam tabel DML target, maka pernyataan DML gagal pada waktu parse.
-
Jika tabel pencatatan kesalahan tidak berisi jenis kolom yang tidak didukung, maka semua kesalahan DML akan dicatat sampai batas penolakan kesalahan tercapai. Untuk baris di mana kesalahan terjadi, nilai kolom dengan kolom yang sesuai dalam tabel pencatatan kesalahan dicatat bersama dengan informasi kontrol.
-