Como la instrucción ejecutada no es en realidad DML (p. ej., UPDATE
, INSERT
o EXECUTE
), sino una pieza de T-SQL que contiene DML, sospecho que no se trata como una consulta de actualización.
La sección 13.1.2.3 de la especificación JDBC 4.1 establece algo (bastante difícil de interpretar por cierto):
Dada esta información, supongo que executeUpdate()
internamente hace un execute()
, y luego - como execute()
devolverá false
- devolverá el valor de getUpdateCount()
, que en este caso, de acuerdo con la especificación JDBC, devolverá -1
.
Esto se corrobora aún más por el hecho 1) de que el Javadoc para Statement.executeUpdate()
dice:
Y 2) que el Javadoc para Declaración.getUpdateCount() especifica:
Solo para aclarar:dado el Javadoc para executeUpdate()
el comportamiento probablemente sea incorrecto, pero se puede explicar.
Además, como comenté en otro lugar, el -1 podría indicar:tal vez algo cambió, pero simplemente no lo sabemos, o no podemos dar una cantidad precisa de cambios (por ejemplo, porque en este ejemplo es una pieza de T- SQL que se ejecuta).