PS: Le coup des requêtes à la suite sur un même appel, c'est utile quand tu utilises une séquence par exemple :
"insert into matable (id, nom) values (seq.nextval, 'toto');select seq.currval from dual"
=> A ce moment, tu ouvre la requête comme un curseur, et tu récupère la valeur de l'id créé. Vu que les ponts de type ODBC, JDBC, OLEDB sont transactionnels, la valeur retournée est obligatoirement la valeur que tu as généré.
Tandis que si tu split ce code en deux appels depuis Java, tu ne peux pas garantir que le currval sera le même que ton nextval.