Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

java.sql.SQLException:ORA-01002:busca fora de sequência


SELCT ... FOR UPDATE só faz sentido no contexto de uma transação gerenciada, pois exige que os bloqueios sejam retirados nas linhas selecionadas.

Por padrão, o JDBC não usa uma transação gerenciada, ele usa uma criada implicitamente que confirma assim que a consulta é executada. Isso quebrará a semântica de SELECT ... FOR UPDATE , e o driver JDBC reclama.

Para usar uma transação gerenciada, adicione
connection.setAutoCommit(false); 

antes de executar a consulta. Depois, execute connection.commit() .