Este código te puede servir: CallableStatement stmtGetValue = conn.prepareCall ("begin " + spName + " (?,?,?,?); end;"); // Este ejemplo te devuelve 3 variables de salida (los tipos que devuelves deben coincidir con los del proceso!") stmtGetValue.setString (3, in1); // esto sería un paraámetro de entrada para tu pl/sql stmtGetValue.registerOutParameter(1, Types.INTEGER);//salida 1 stmtGetValue.registerOutParameter(2, Types.INTEGER);//salida 2 stmtGetValue.registerOutParameter(4, Types.VARCHAR);//salida 3 stmtGetValue.execute(); Integer out1 = stmtGetValue.getInt(1); Integer out2 = stmtGetValue.getInt(2); String out3 = stmtGetValue.getString(3); - SpName: sería el nombre de tu PL. - Si tu PL no tuviera variables de entrada o salida todo sería lo mismo pero quitándole el tratamiento de las variables de entrada y salida. Suerte !