java - 使用简单的 jdbc 调用将数组作为输入参数传递给 Oracle 存储过程

标签 java spring oracle stored-procedures spring-jdbc

这是我的 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/

相关文章:

java - 如何在 JSP 页面中显示 Java 日历对象

java - 简单的 JSP 页面不工作

java - 改变按钮的颜色

Java:异步 MongoTemplate/MongoOperation

java - JPA+Hibernate+@Transactional注解的spring事务支持的奇怪行为

oracle - TNS : No listener from other user

c# - 如何将 Oracle session 的全局化设置为与 .NET 中的 Windows 相同?

oracle - Oracle 中 ORDER BY 的 ORA-00904

java - 如何使用indexOf和lastIndexOf?

java - 如何在 ActionListener 中将 .getSource() 与多个 JButton 一起使用