Oracle存储过程INOUT ARRAY

时间:2019-11-24 15:13:15

标签: spring stored-procedures

我具有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)));

有输入吗?

谢谢

0 个答案:

没有答案