jdbc-spec има следното да се каже за кода за връщане на пакетни актуализации:
■ 0 или повече — командата е обработена успешно и стойността е anupdate count, показващ броя на редовете в базата данни, които са били засегнати от изпълнението на командата Глава 14 Пакетни актуализации 121
■ Statement.SUCCESS_NO_INFO — командата е обработена успешно, но броят на засегнатите редове е неизвестен
Statement.SUCCESS_NO_INFO се дефинира като -2, така че резултатът ви казва, че всичко работи добре, но няма да получите информация за броя на актуализираните колони.
Документацията на оракула гласи:
•За подготвен пакет от изявления не е възможно да се знае броят на редовете, засегнати в базата данни от всеки отделен оператор в пакета. Следователно всички елементи на масива имат стойност -2. Според спецификацията на JDBC 2.0, стойност от -2 показва, че операцията е била успешна, но броят на засегнатите редове е неизвестен.
• За пакет с общи изявления масивът съдържа действителните бройки на актуализациите, показващи броя на редовете, засегнати от всяка операция. Действителният брой актуализации може да бъде предоставен само в случай на генерични изрази в изпълнението на стандартно пакетиране на Oracle.
•За пакет с извикваеми оператори сървърът винаги връща стойността 1 като брой на актуализациите, независимо от редовете с номера, засегнати от всяка операция.
Така че изглежда, ако имате нужда от броя на актуализациите, не можете да използвате PreparedStatement
s, но трябва да се върнем към обикновен Statement
с.