Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Programista PL/SQL, jak uzyskać wiersz, który spowodował niepowodzenie wstawiania?

Z Oracle 10g r2 możesz użyć błędów dziennika klauzula wstaw polecenie do rejestrowania błędów w osobnej tabeli. Oto przykład:

SQL> create table test_table(
  2    id   number primary key,
  3    col1 varchar2(7)
  4  )
  5  ;

Table created


-- creates a table for logging errors (table name will be prefaced with err$_)
SQL> begin dbms_errlog.create_error_log('TEST_TABLE'); end;
  2  /

PL/SQL procedure successfully completed

-- violates primary key constraint
SQL> insert into test_table(id, col1)
  2  (  select 1, level
  3      from dual
  4    connect by level <= 3)
  5    log errors reject limit unlimited;

1 row inserted

SQL> commit;

SQL> select * from test_table;

        ID COL1
---------- -------
         1 1


SQL> select * from err$_test_table;

ORA_ERR_NUMBER$ ORA_ERR_MESG$                                           ORA_ERR_ROWID$  ORA_ERR_OPTYP$ ORA_ERR_TAG$ ID  COL1
--------------- ------------------------------------------------------------------------------------------------------------
              1 ORA-00001: unique constraint (HR.SYS_C008315) violated  I                                            1     2
              1 ORA-00001: unique constraint (HR.SYS_C008315) violated  I                                            1     3


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wywoływanie procedury składowanej z parametrem wejściowym i kursorem wyjściowym w skrypcie perla

  2. Usuń losowe wyrażenie z ciągu

  3. Hibernacja> CLOB> Oracle :(

  4. Szybsze sprawdzanie nakładania się Oracle

  5. Efektywnie wstawiaj duże ilości danych za pomocą SQL