Ответ 1
В jdbc-spec имеется следующее сообщение о возвратном коде пакетных обновлений:
■ 0 или больше - команда была успешно обработана, и значение подсчет обновлений, указывающий количество строк в базе данных, на которые повлияло выполнение команд Глава 14 Пакетные обновления 121
■ Statement.SUCCESS_NO_INFO - команда была успешно обработана, но количество затронутых строк неизвестно
Statement.SUCCESS_NO_INFO определяется как -2, поэтому ваш результат говорит, что все работает нормально, но вы не получите информацию о количестве обновленных столбцов.
В документации оракула говорится:
• Для подготовленной части оператора невозможно узнать количество строк, затронутых в базе данных, каждым отдельным оператором в пакете. Следовательно, все элементы массива имеют значение -2. Согласно спецификации JDBC 2.0, значение -2 указывает, что операция прошла успешно, но количество затронутых строк неизвестно.
• Для общей партии операторов массив содержит фактические подсчеты обновления, указывающие количество строк, на которые влияет каждая операция. Фактические подсчеты обновления могут быть предоставлены только в случае общих операторов в реализации Oracle стандартной пакетной обработки.
• Для пакета вызываемых операторов сервер всегда возвращает значение 1 в качестве количества обновлений, независимо от числа строк, на которые влияет каждая операция.
Итак, если вам нужны подсчеты обновления, вы не можете использовать PreparedStatement
, но должны вернуться к обычным Statement
s.