Du kan göra detta med error_logging_clause . (Länken är för infogningen eftersom i dokumentationen för SAMMANFATTNING det står att den har samma beteende som en insert.
För ditt 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;
Observera att det finns vissa begränsningar för error_logging_clausule. Från dokumentationen:
-
Följande villkor gör att satsen misslyckas och rullas tillbaka utan att anropa felloggningsfunktionen:
-
Brott mot uppskjutna begränsningar.
-
Alla INSERT- eller MERGE-operationer med direkt väg som skapar en unik begränsning eller indexöverträdelse.
-
Alla uppdateringsåtgärder UPDATE eller MERGE som ger upphov till en unik överträdelse av begränsarindex).
-
-
Du kan inte spåra fel i felloggningstabellen för kolumner av LONG, LOB eller objekttyp. Tabellen som är målet för DML-operationen kan dock innehålla dessa typer av kolumner.
-
Om du skapar eller ändrar motsvarande felloggningstabell så att den innehåller en kolumn av en typ som inte stöds, och om namnet på den kolumnen motsvarar en kolumn som inte stöds i mål-DML-tabellen, misslyckas DML-satsen vid analystillfället.
-
Om felloggningstabellen inte innehåller några kolumntyper som inte stöds loggas alla DML-fel tills avvisningsgränsen för fel nås. För rader där fel uppstår loggas kolumnvärden med motsvarande kolumner i felloggningstabellen tillsammans med kontrollinformationen.
-