Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que significa quando Statement.executeUpdate() retorna -1?


Como a instrução executada não é realmente DML (ex. UPDATE , INSERT ou EXECUTE ), mas um pedaço de T-SQL que contém DML, suspeito que não seja tratado como uma consulta de atualização.

A seção 13.1.2.3 da especificação JDBC 4.1 afirma algo (bastante difícil de interpretar btw):

Dadas essas informações, acho que executeUpdate() internamente faz um execute() , e então - como execute() retornará false - retornará o valor de getUpdateCount() , que neste caso - de acordo com a especificação JDBC - retornará -1 .

Isso é corroborado pelo fato de 1) que o Javadoc para Statement.executeUpdate() diz:

E 2) que o Javadoc para Statement.getUpdateCount() especifica:

Apenas para esclarecer:dado o Javadoc para executeUpdate() o comportamento provavelmente está errado, mas pode ser explicado.

Além disso, como comentei em outro lugar, o -1 pode apenas indicar:talvez algo tenha sido alterado, mas simplesmente não sabemos ou não podemos fornecer um número preciso de alterações (por exemplo, porque neste exemplo é um pedaço de T- SQL que é executado).