获取异常 java.sql.SQLException: ORA-03115: 不支持的网络数据类型或表示
Posted
技术标签:
【中文标题】获取异常 java.sql.SQLException: ORA-03115: 不支持的网络数据类型或表示【英文标题】:Getting Exception java.sql.SQLException: ORA-03115: unsupported network datatype or representation 【发布时间】:2018-10-28 10:32:18 【问题描述】: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】:换行试试
callStatement.registerOutParameter("OUT_REPAIR_INFO", Types.REF);
与
callStatement.registerOutParameter("OUT_REPAIR_INFO", oracle.jdbc.OracleTypes.CURSOR);
【讨论】:
它解决了我的问题,但我没有得到任何结果集 eventhogh 我硬编码的输出变量。请帮助我。 我不确定你的意思是“没有得到任何结果集”。你的意思是你的变量hadResults
最终是false
?如果是这种情况,则忽略该值,而是尝试使用 ResultSet myResultSet = (ResultSet)callStatement.getObject("OUT_REPAIR_INFO");
之类的行从可调用语句中读取结果集。以上是关于获取异常 java.sql.SQLException: ORA-03115: 不支持的网络数据类型或表示的主要内容,如果未能解决你的问题,请参考以下文章