从 WLS - 数据源连接对象 Types.ARRAY 不起作用



我正在使用WLS 12.1.3,oracle是10.2.0,我正在使用weblogic数据源来获取连接这是代码,

   CallableStatement cst = null;
    try {
        cst = conn
                .prepareCall("{call myProc(?,?,?,?,?,?,?,?)}");
        final String typeTableName = "studentdetails";
        cst.setInt(1, student.getEmpid());
        cst.setInt(2, student.getOrgid());
        cst.setInt(3, student.getYearid());
        cst.setString(4,  student.getClassType());
        cst.setInt(5, student.getStudentid());
        cst.registerOutParameter(6, Types.ARRAY, typeTableName);
        cst.registerOutParameter(7, java.sql.Types.VARCHAR);
        cst.registerOutParameter(8, java.sql.Types.VARCHAR);
                        long startTime=System.currentTimeMillis();
        cst.execute();
                        String dat=cst.getString(7);
                         //Array arr = cst.getArray(6);
                        long endTime=System.currentTimeMillis();
        if (null != cst.getObject(6)) {
            data = (Object[]) ((Array) cst.getObject(6)).getArray();
        }

这是连接对象和可调用语句 obj

cst = (weblogic.jdbc.wrapper.CallableStatement_oracle_jdbc_driver_OracleCallableStatementWrapper) weblogic.jdbc.wrapper.CallableStatement_oracle_jdbc_driver_OracleCallableStatementWrapper@53
conn = (weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection) [weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection-XMLJDBC_Data_Source-1-3, oracle.jdbc.driver.LogicalConnection@34505466]

如果我使用数据源,我得到的 cst.getObject(6( 为空,但如果使用正常的 jdbc 连接,我得到的是对象。请建议如何解决此问题

获取此异常"错误:get_item_uda_data:ORA-02089:过程中的从属会话异常中不允许提交">

您的问题很可能与"myProc"过程有关,该过程试图在启用了自动提交的活动 JTA 事务中调用"提交"。

在 JDBC 上下文中,在这种情况下不会有问题,因为它可能不会在您的环境中自动提交。

如果我的假设是正确的,你只需要删除"myProc"中的"提交"。另一种选择是在 JTA 事务之外调用该过程(只需用 "TransactionAttribute.NOT_SUPPORTED" 注释您的 bean(。

相关内容

  • 没有找到相关文章

最新更新