获取异常java.sql.SQLException:ORA-03115:不支持的网络数据类型或表示形式

时间:2018-10-28 10:32:19

标签: java oracle jdbc plsql

Java过程:

CREATE OR REPLACE PACKAGE pkg_name is

    TYPE REF_CURSOR IS REF CURSOR; 

    PROCEDURE p_fetch_unprocessed_repair (
                IN_OUT_BULK_ID      IN OUT  NUMBER,
                IN_PUBLISH_STATUS   IN  CHAR,
                out_from_date       OUT VARCHAR2,
                out_to_date         OUT VARCHAR2,
                out_repair_info     OUT REF_CURSOR,
                out_error_cd        OUT VARCHAR2
        ) ;

    END;

用于调用存储过程的Java代码块。

try {
    CallableStatement callStatement= conn.prepareCall("{call PKG_NAME.p_fetch_unprocessed_repair(?,?,?,?,?,?)}");
    conn.setAutoCommit(false);
    callStatement.setFetchDirection(ResultSet.FETCH_FORWARD);
    callStatement.setFetchSize(props.getDbBatchSize());
    callStatement.registerOutParameter("IN_OUT_BULK_ID", Types.NUMERIC);
    if(null != bulkID && StringUtils.isNotBlank(bulkStatus)){
        callStatement.setInt("IN_OUT_BULK_ID", bulkID);
    }
    callStatement.setString("IN_PUBLISH_STATUS", bulkStatus);
    callStatement.registerOutParameter("OUT_FROM_DATE", Types.VARCHAR);
    callStatement.registerOutParameter("OUT_TO_DATE", Types.VARCHAR);
    callStatement.registerOutParameter("OUT_REPAIR_INFO", Types.REF);
    callStatement.registerOutParameter("OUT_ERROR_CD", Types.VARCHAR);
    Boolean hadResults = callStatement.execute();
} catch(exception e ) {

}

1 个答案:

答案 0 :(得分:0)

尝试替换行

            callStatement.registerOutParameter("OUT_REPAIR_INFO", Types.REF);

使用

            callStatement.registerOutParameter("OUT_REPAIR_INFO", oracle.jdbc.OracleTypes.CURSOR);