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

Obsługa wyjątków wstawiania JDBC wsadowego

Oświadczasz, że wykonujesz partie instrukcji SQL, więc zakładam, że używasz executeBatch . Kiedy wykonaszBatch partii oświadczeń, niektóre z nich mogą się powieść, a niektóre nie. Jeśli jedna instrukcja nie powiedzie się, nie oznacza to, że sterownik JDBC wycofuje instrukcje, które się powiodły. Sterownik JDBC może podjąć próbę wykonania wszystkich instrukcji w paczce, jeśli jedna instrukcja nie powiedzie się lub może zatrzymaćwykonywanie instrukcji w paczce po niepowodzeniu instrukcji (wygląda na to, że używany sterownik zdecyduje się zatrzymaćwykonywanie instrukcji zaraz po wystąpieniu awarii).

Gdy jedna instrukcja w partii nie powiedzie się, powinieneś otrzymać BatchUpdateException . W programie obsługi wyjątków musisz wywołać getUpdateCounts . To da ci tablicę int który informuje o tym, ile wierszy zostało zaktualizowanych w oświadczeniu, Statement.SUCCESS_NO_INFO wskazujące, że instrukcja powiodła się, ale nie była dostępna liczba wierszy, lub Statement.EXECUTE_FAILED wskazując, że oświadczenie nie powiodło się. Jeśli pierwsze 99 instrukcji się powiedzie, 100. instrukcja wygeneruje błąd, a pozostałe instrukcje nie zostaną wykonane, powinieneś otrzymać tablicę 100 elementów, w której pierwsze 99 elementów wskazuje na sukces, a 100. wskazuje na Statement.EXECUTE_FAILED . Twój kod musiałby wtedy ponownie spróbować tych instrukcji, które nie zostały wykonane (w tym przypadku instrukcji 101-1000).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja INSERT w Oracle

  2. Jak wyświetlić wszystkie tabele w Oracle?

  3. Oracle wstawia, jeśli wiersz nie istnieje

  4. Najlepsze praktyki:.NET:Jak zwrócić PK w bazie danych Oracle?

  5. Metoda zbierania:procedura przycinania w bazie danych Oracle