不是很明白你的意思存储过程直接返回sqlcode sqlerrm不行么?

解决方案 »

  1.   

    在一个主过程中,调用几个子过程,将每个子过程的exception信息存储在索引table中,这样在一个子过程发生异常时,就不会影响其它的子过程。再把这些异常信息返回给Java。
      

  2.   

    Java代码如下:
    CallableStatement cstmt = dao.getCallableStatement("{call package名}");
    cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
    cstmt.execute();
    int retStatus = cstmt.getInt(1);
    cstmt.close(); :
    if (retStatus == -1) { cstmt = dao.getCallableStatement("{call package名.GET_ERROR_NUMBER(?)}");
    cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
    cstmt.execute();
    errorNumber = cstmt.getInt(1);
    cstmt.close();

    cstmt = dao.getCallableStatement("{call package名.GET_ERROR_POSITION(?)}");
    cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
    cstmt.execute();
    errorPosition = cstmt.getInt(1);
    cstmt.close();

    cstmt = dao.getCallableStatement("{call package名.GET_ERROR_DESCRIPTION(?)}");
    cstmt.registerOutParameter(1, java.sql.Types.VARCHAR);
    cstmt.execute();
    errorDescription = cstmt.getString(1);
    cstmt.close();
      

  3.   

    然后添加到log类中:
    throw new DBException(JuchuuTorikomiDBInvokeRule.RULE_ID + "(位置" + errorPosition + ")编号[" + errorNumber     + "]描述 :"+ errorDescription);

    catch (Exception e) {
    log.addMessage(Logger.SYSTEM_ERROR, e);
    }
      

  4.   

    应该能实现吧,用hibernate实现对数据库对象的持久化,获取持久化数据对象,每次操作该数据对象应该可以吧
      

  5.   

    明白两位的意思,但索引table只是存储在内存中,无法检索;同时我用的Java框架是Struts,不是hibernate。