PROCEDURE Query(                p_Emp_Number VARCHAR2,
                                p_Start_Date VARCHAR2, 
                                p_End_Date   VARCHAR2, 
                                Errbuf       OUT NOCOPY VARCHAR2,
                                Retcode      OUT NOCOPY NUMBER,
                                p_Record_Set OUT Record_Set) IS
    v_Emp_Number VARCHAR2(20);
    v_Start_Date DATE;
    v_End_Date   DATE;
  BEGIN
    v_Emp_Number := p_Emp_Number;
    v_Start_Date := To_Date(Nvl(p_Start_Date, '1900-01-01'), 'YYYY-MM-DD');
    v_End_Date   := To_Date(Nvl(p_End_Date, '4712-12-31'), 'YYYY-MM-DD');    OPEN p_Record_Set FOR     select "a" from dual;    Errbuf  := '';
    Retcode := 0;  EXCEPTION
    WHEN OTHERS THEN
      Errbuf  := '出现异常。';
      Retcode := 2;
  END Query;java代码执行此存储过程:try{
   /*省略其他代码,这里的代码绝对没问题,经过千万次考验*/
   stmt.execute();}catch (SQLException e) {
            flag = stmt.getString(paramLen + 2);
            msg = stmt.getString(paramLen + 1);
            this.rethrow(e, procName, params);
        } finally {
            DbUtils.close(rs);
            DbUtils.close(stmt);
        }
当存储过程执行到EXCEPTION块的时候,抛出异常,于是导致stmt.execute()执行不成功,于是,flag = stmt.getString(paramLen + 2);
msg = stmt.getString(paramLen + 1);均取不到值我改怎样在存储过程抛异常的情况下取得存储过程的OUT值呢?