Protože parametry specifikované ve vracejících se klauzulích jsou zpracovány jiným způsobem než normální výstupní parametry (getReturnResultSet vs getResultSet vs vracení parametrů v callablestatement).
Je třeba je zpracovat pomocí OraclePreparedStatement. V druhém případě, když zabalíte příkaz insert do begin..end, vložení zpracuje samotná databáze a al jdbc vidí anonymní plsql blok.
http://docs.oracle.com/cd/E11882_01 /java.112/e16548/oraint.htm#BABJJDDA