INパラメータを受け取り、 OUTカーソル パラメータを返すOracle PL/SQL プロシージャがあるとします。この手順を実行する jdbc コードがあります。
DataSource dataSource;
    //datasource was set
    CallableStatement statement = null;
    ResultSet result = null;
    ResultSet secondaryResult = null;
    Connection connection = null;
    try {
        connection = dataSource.getConnection();
        statement = connection.prepareCall("{? = call pl_sql_func(?)}");
        statement.registerOutParameter(1, OracleTypes.CURSOR);
        statement.setString(2,"param");
        // !
        secondaryResult = statement.executeQuery();
        secondaryResult.close();
        result = (ResultSet) statement.getObject(1);
        while(result.next()){
            //get some data
        }
    } catch (Exception ex){
    }
    finally{
        //closing statement, result, secondaryResult and connection
    }
このコードを実行してみると、secondaryResult にはデータがなく、result にはデータがあることがわかります。当たり前だけど誰か説明してくれ
1)statement.executeQuery()実際に何を生み出すのか? 
2) ステートメントがプロシージャー呼び出しを生成するときに、返される ResultSet にデータが含まれることはありますか? それとも常に空ですか?
PS可能な最適化は、この質問の目標ではありません。コードをそのまま説明してほしい。