首页 > 解决方案 > CallableStatement registerOutParameter with OracleTypes.ARRAY 耗时太长

问题描述

我们在使用 Java 8 (ojdbc8.jar) JDBC 可调用语句从 Oracle 19C 数据库中获取数据时使用 Oracle 表类型,尝试注册 out 参数时大约需要 7-8 秒。

logger.info("Trying to set 12th parameter");
callableStatement.registerOutParameter(12, OracleTypes.ARRAY,"AASC_SERIAL_NUMBERS_TBL"); // taking 7-8 seconds  time
logger.info("Completed setting 12th parameter");

下面是记录类型的语法:

create or replace TYPE "AASC_SERIAL_NUMBERS_TBL" is table of AASC_SERIAL_NUMBERS_rec;
create or replace TYPE "AASC_SERIAL_NUMBERS_REC" is object
(DELIVERY_ID number,
DELIVERY_DETAIL_ID number,
SERIAL_CONTROL_CODE number,
LOT_CONTROL_CODE number,
SUBINVENTORY varchar2(200),
locator varchar2(200),
LOT_NUMBER varchar2(200),
SERIAL_NUMBER varchar2(200),
SERIAL_LIST varchar2(32767),
SHIPMENT_LINE_ID NUMBER);

对于具有相同 Java 8 和 ojdbc8 驱动程序的 Oracle 12C 数据库,相同的代码只需不到 1 秒的时间。我们想了解当我们调用registerOutParameter时究竟发生了什么,以及为什么 Oracle 19C 数据库在这个特定步骤需要时间来响应。

标签: jdbcjava-8ojdbcoracle19c

解决方案


推荐阅读