Sie können dies mit der error_logging_clause tun . (Der Link ist für die Einfügung da in der Dokumentation von VERBINDEN es sagt, dass es das gleiche Verhalten wie eine Einfügung hat.
Für Ihren Fall:
-- 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;
Bitte beachten Sie, dass es einige Einschränkungen für die error_logging_clause gibt. Aus der Dokumentation:
-
Die folgenden Bedingungen führen dazu, dass die Anweisung fehlschlägt und zurückgesetzt wird, ohne die Fehlerprotokollierungsfunktion aufzurufen:
-
Verletzt verzögerte Beschränkungen.
-
Jede INSERT- oder MERGE-Operation im direkten Pfad, die eine Uniqueconstraint- oder Indexverletzung auslöst.
-
Jede Aktualisierungsoperation UPDATE oder MERGE, die eine Verletzung des eindeutigen Einschränkungsindex auslöst).
-
-
Sie können Fehler in der Fehlerprotokollierungstabelle für LONG-, LOB- oder Objekttypspalten nicht nachverfolgen. Die Tabelle, die das Ziel der DML-Operation ist, kann jedoch diese Spaltentypen enthalten.
-
Wenn Sie die entsprechende Fehlerprotokollierungstabelle erstellen oder ändern, sodass sie eine Spalte eines nicht unterstützten Typs enthält, und wenn der Name dieser Spalte einer nicht unterstützten Spalte in der Ziel-DML-Tabelle entspricht, schlägt die DML-Anweisung zum Zeitpunkt der Analyse fehl.
-
Wenn die Fehlerprotokollierungstabelle keine nicht unterstützten Spaltentypen enthält, werden alle DML-Fehler protokolliert, bis die Ablehnungsgrenze für Fehler erreicht ist. Für Zeilen, in denen Fehler auftreten, werden Spaltenwerte mit den entsprechenden Spalten in der Fehlerprotokollierungstabelle zusammen mit den Kontrollinformationen protokolliert.
-