Jdbc-spec ma następujące informacje o kodzie powrotu aktualizacji wsadowych:
■ 0 lub więcej — polecenie zostało przetworzone pomyślnie, a wartość to liczba aktualizacji wskazująca liczbę wierszy w bazie danych, na które miało wpływ wykonanie poleceniaRozdział 14 Aktualizacje wsadowe 121
■ Statement.SUCCESS_NO_INFO — polecenie zostało przetworzone pomyślnie, ale liczba wierszy, których to dotyczy, jest nieznana
Statement.SUCCESS_NO_INFO jest zdefiniowany jako -2, więc Twój wynik mówi, że wszystko działało dobrze, ale nie otrzymasz informacji o liczbie zaktualizowanych kolumn.
Dokumentacja wyroczni stwierdza:
•Dla przygotowanej partii wyciągów nie jest możliwe poznanie liczby wierszy w bazie danych, na które ma wpływ każdy indywidualny wyciąg w partii. Dlatego wszystkie elementy tablicy mają wartość -2. Zgodnie ze specyfikacją JDBC 2.0 wartość -2 wskazuje, że operacja się powiodła, ale liczba wierszy, których to dotyczy, jest nieznana.
• W przypadku zbiorczej partii instrukcji tablica zawiera rzeczywiste liczniki aktualizacji wskazujące liczbę wierszy, na które ma wpływ każda operacja. Rzeczywista liczba aktualizacji może być podana tylko w przypadku ogólnych instrukcji w implementacji Oracle standardowego przetwarzania wsadowego.
• W przypadku partii instrukcji wywoływanych serwer zawsze zwraca wartość 1 jako licznik aktualizacji, niezależnie od liczby wierszy, na które ma wpływ każda operacja.
Wygląda więc na to, że jeśli potrzebujesz liczników aktualizacji, nie możesz użyć PreparedStatement
s, ale muszę wrócić do zwykłego Statement
s.