【发布时间】:2021-03-02 14:26:33
【问题描述】:
实际上,对于以下问题,我已经坚持了很长时间。 有没有人通过 Java 实现了 Oracle 存储过程调用,我实现了但得到以下错误'invalid column type 16 error'
"stack_trace":"org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback; SQL [{call POST_CYCLE_TFO_STAT_PKG.INSERT_CYCLE_STATUS(?, ?, ?, ?)}] 的未分类 SQLException;SQL 状态 [99999];错误代码 [17004 ]; 列类型无效:16;嵌套异常为 java.sql.SQLException:列类型无效:16\r\n\tat org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)\r\n \tat org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)\r\n\tat org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)\r\n\tat org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1443)\r\n\tat org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1108)\r\n\tat org. springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1147)\ r\n\tat org.springframework.jdbc.core.simple.AbstractJdbcCall.executeCallInternal(AbstractJdbcCall.java:412)\r\n\tat org.springframework.jdbc.core.simple.AbstractJdbcCall.doExecute(AbstractJdbcCall.java:372 )\r\n\tat org.springframework.jdbc.core.simple.SimpleJdbcCall.execute(SimpleJdbcCall.java:198)\r\n\tat com.mastercard.settlment.axon.payment.request.status.dao.AxonPaymentRequestCycleEventStatusDao .getCycleEventStatus(AxonPaymentRequestCycleEventStatusDao.java:46)\r\n\tat
我的程序语法是:
PROCEDURE insert_cycle_status (SETTLEMENT_DATE_MANUAL IN DATE,
DEBUG_FLAG IN OUT BOOLEAN,
ERROR_INFO OUT VARCHAR2,
RESULT OUT BOOLEAN);
而我的 Java 代码如下:
SimpleJdbcCall call = new SimpleJdbcCall(jdbcTemplate)
.withoutProcedureColumnMetaDataAccess()
.withProcedureName(CYCLE_EVENT_STATUS_PROCEDURE)
.declareParameters(new SqlParameter("SETTLEMENT_DATE_MANUAL", Types.DATE))
.declareParameters(new SqlParameter("DEBUG_FLAG", Types.BOOLEAN))
.declareParameters(new SqlOutParameter("ERROR_INFO", Types.VARCHAR))
.declareParameters(new SqlOutParameter("RESULT", Types.BOOLEAN));
SqlParameterSource in = new MapSqlParameterSource()
.addValue("SETTLEMENT_DATE_MANUAL", null)
.addValue("DEBUG_FLAG", 1);
Map<String, Object> result = call.execute(in);
任何人都可以就此问题分享任何指示,这将非常有帮助。 谢谢!提前
【问题讨论】:
-
只是猜测 -- `Types.VARCHAR` 是为
VARCHAR2参数添加的类型。我对java一无所知。但除了这个问题,我看不到任何其他问题。 -
是的,Varchar for Varchar2 in java
标签: java oracle jdbctemplate