Oracle
 sql >> Base de données >  >> RDS >> Oracle

java.sql.SQLException :ORA-01002 :récupération hors séquence

SELCT ... FOR UPDATE n'a de sens que dans le cadre d'une transaction managée, puisqu'elle nécessite la levée de verrous sur les lignes sélectionnées.

Par défaut, JDBC n'utilise pas de transaction gérée, il en utilise une implicitement créée qui s'engage dès que la requête est exécutée. Cela cassera la sémantique de SELECT ... FOR UPDATE , et le pilote JDBC se plaint.

Pour utiliser une transaction gérée, ajoutez

connection.setAutoCommit(false); 

avant d'exécuter la requête. Ensuite, exécutez connection.commit() .