Weil in Rückgabeklauseln angegebene Parameter anders behandelt werden als normale Ausgabeparameter (getReturnResultSet vs. getResultSet vs. Rückgabeparameter in einer aufrufbaren Anweisung).
Sie müssen mit OraclePreparedStatement behandelt werden. Im zweiten Fall, wenn Sie die Insert-Anweisung in begin..end einschließen, wird die Einfügung von der Datenbank selbst gehandhabt und alle jdbc sieht, dass es sich um einen anonymen plsql-Block handelt.
http://docs.oracle.com/cd/E11882_01 /java.112/e16548/oraint.htm#BABJJDDA