这是我的 oracle 过程规范
CREATE OR REPLACE PACKAGE PKG_RE_FI AS
PROCEDURE PRC_RE_FI_DETAILS(P_FAN_NO IN VARCHAR2,
P_REF_ID IN TY_APP_REF_ID,
P_COMMENTS IN VARCHAR2,
P_BILLING_FLAG IN VARCHAR2,
P_STATUS OUT VARCHAR2);
END PKG_RE_FI;
TY_APP_REF_ID 为
CREATE OR REPLACE TYPE ty_app_REF_ID as varray(500) of obj_array_ref_id
CREATE OR REPLACE TYPE obj_array_ref_id AS OBJECT(
app_ref_id VARCHAR2(100)
)
我正在使用 Spring JDBC 框架(SimpleJdbcCall 对象)来执行上述过程。下面是我声明的代码片段
this.reFIJdbcCall = new SimpleJdbcCall(dataSource).withCatalogName("PKG_RE_FI").
withProcedureName("PRC_RE_FI_DETAILS").declareParameters(new SqlParameter("P_FAN_NO", Types.VARCHAR),
new SqlParameter("P_REF_ID", Types.ARRAY),
new SqlParameter("P_COMMENTS", Types.VARCHAR),
new SqlParameter("P_BILLING_FLAG", Types.VARCHAR),
new SqlOutParameter("P_STATUS", Types.VARCHAR)
);
我应该如何将数组传递给
new SqlParameter("P_REF_ID", Types.ARRAY),
到MapSqlParameterSource
MapSqlParameterSource in = new MapSqlParameterSource();
最佳答案
Spring Data JDBC Extensions项目有一些支持,使这变得更容易。看看reference manual for passing in an Oracle ARRAY type .
关于java - 使用简单的 jdbc 调用将数组作为输入参数传递给 Oracle 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655331/