Specifikace jdbc má k návratovému kódu dávkových aktualizací následující informace:
■ 0 nebo vyšší – příkaz byl úspěšně zpracován a hodnota je počet aktualizací udávající počet řádků v databázi, které byly ovlivněny provedením příkazu Kapitola 14 Dávkové aktualizace 121
■ Statement.SUCCESS_NO_INFO – příkaz byl úspěšně zpracován, ale počet ovlivněných řádků není znám
Statement.SUCCESS_NO_INFO je definováno jako -2, takže váš výsledek říká, že vše fungovalo dobře, ale nezískáte informace o počtu aktualizovaných sloupců.
Dokumentace věštce uvádí:
•U připravené dávky výpisů není možné znát počet řádků ovlivněných v databázi každým jednotlivým výpisem v dávce. Proto mají všechny prvky pole hodnotu -2. Podle specifikace JDBC 2.0 hodnota -2 znamená, že operace byla úspěšná, ale počet ovlivněných řádků není znám.
•U generické dávky příkazů pole obsahuje skutečné počty aktualizací udávající počet řádků ovlivněných každou operací. Skutečné počty aktualizací lze poskytnout pouze v případě obecných příkazů v implementaci standardního dávkování Oracle.
•U volatelné dávky příkazů server vždy vrátí hodnotu 1 jako počet aktualizací, bez ohledu na počet řádků ovlivněných každou operací.
Zdá se tedy, že pokud potřebujete počty aktualizací, nemůžete použít PreparedStatement
s, ale musíte se vrátit k prostému Statement
s.