Here, is simple e.g. of How I'm using callablestatement
Connection con = getConnection();
CallableStatement call = con.prepareCall("{call SpName(?, ?)}");
call .setObject(1, params[0]);
call .setObject(2, params[1]);
call .execute();
ResultSet rs = call .getResultSet();
It's working fine for all SP. But if there is temp table used in SP then it returns null Resultset.