我具有INOUT类型为ARRAY的Oracle PLSQL过程。我正在尝试使用simpleJdbcCall.execute方法进行调用。我收到此错误:
原因:java.sql.SQLException:无法转换为内部表示形式:{my_msg_tbl=org.springframework.data.jdbc.support.oracle.SqlArrayValue@3978894a}
在oracle.sql.ARRAY.toARRAY(ARRAY.java:230)
在oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8459)
这是plsql详细信息
create or replace TYPE MY_ARRAY_TBL as table of varchar2(5000);
CREATE OR REPLACE PACKAGE MY_PROCEDURE AS
PROCEDURE GET_MY_RECORDS ( name VARCHAR2, my_msg_tbl IN OUT MY_ARRAY_TBL);
END MY_PROCEDURE;
Java代码: 简单的JDBC调用
simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate)
.withCatalogName("MY_PROCEDURE")
.withProcedureName("GET_MY_RECORDS")
.withoutProcedureColumnMetaDataAccess()
.declareParameters(new SqlParameter("name", Types.VARCHAR, "VARCHAR2"),
new SqlInOutParameter("my_msg_tbl", Types.ARRAY, "MY_ARRAY_TBL", new SqlReturnArray()));
程序调用:
String[] valueArr = new String[1];
valueArr[0] = "some-value";
simpleJdbcCall.execute(new MapSqlParameterSource("name","test"), Collections.singletonMap("my_msg_tbl", new SqlArrayValue(valueArr)));
有输入吗?
谢谢