sql >> Databáze >  >> RDS >> Oracle

JDBC Zpracování výjimek dávkového vložení

Uvádíte, že provádíte dávky příkazů SQL, takže předpokládám, že používáte executeBatch . Když executeBatch dávky příkazů, některé příkazy mohou být úspěšné a některé mohou selhat. Pokud jeden příkaz selže, neznamená to, že ovladač JDBC vrátí zpět příkazy, které byly úspěšné. Ovladač JDBC se může rozhodnout, že se pokusí provést všechny příkazy v dávce, pokud jeden příkaz selže, nebo se může rozhodnout, že zastaví provádění příkazů v dávce, jakmile příkaz selže (zní to, jako by se ovladač, který používáte, rozhodl zastavit provádění příkazů jako jakmile dojde k poruše).

Když jeden příkaz v dávce selže, měli byste dostat BatchUpdateException . Ve vaší obslužné rutině výjimek musíte zavolat getUpdateCounts . To vám dá pole int který vám řekne, kolik řádků byl příkaz aktualizován, Statement.SUCCESS_NO_INFO označující, že příkaz byl úspěšný, ale nebyl k dispozici žádný počet řádků, nebo Statement.EXECUTE_FAILED což naznačuje, že prohlášení selhalo. Pokud je prvních 99 příkazů úspěšných, 100. příkaz vygeneruje chybu a zbývající příkazy se neprovedou, měli byste získat zpět pole 100 prvků, kde prvních 99 prvků označuje úspěch a 100. prvek označuje Statement.EXECUTE_FAILED . Váš kód by pak musel zopakovat ty příkazy, které nebyly provedeny (v tomto případě příkazy 101-1000).



  1. Používání Oracle EXPAND_SQL_TEXT

  2. Jak vytvořit jednu tabulku z jiné tabulky v SQL

  3. Proč je ladění výkonu SQL nejdůležitější dovedností správy databází

  4. Vraťte řádek pouze v případě, že hodnota neexistuje