【问题标题】:How to convert Java List into an Oracle ARRAY to enter as a param in an Oracle Stored procedure? [duplicate]如何将 Java List 转换为 Oracle ARRAY 以作为参数输入 Oracle 存储过程? [复制]
【发布时间】:2017-04-27 03:10:42
【问题描述】:

我有以下list 的 Person 对象:

List<Person> persons;

Person对象如下:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Person
{
    @XmlElement
    private int id;
    @XmlElement
    private String name;

    public Person(){

    }

}

我正在调用的Stored Procedure 将人员对象列表作为Oracle ARRAY

如何将我的 Java 对象列表转换为 Oracle ARRAY 以便将其传递到存储过程?

我见过CallableStatement.setArray() 方法,但我不知道如何先将我的Java List 转换为Oracle ARRAY。

【问题讨论】:

标签: java arrays oracle stored-procedures arraylist


【解决方案1】:

您可以使用createARRAY方法创建一个sql数组。

使用给定的类型名称和元素创建一个 ARRAY 对象。

这里是一个简单的例子

    String[] array = new String[]{"a", "b", "c"};
    oracle.jdbc.OracleDriver ora = new oracle.jdbc.OracleDriver();
    java.sql.Connection conn = ora.defaultConnection();
    oracle.jdbc.OracleConnection oraConn = (oracle.jdbc.OracleConnection) conn;
    java.sql.Array sqlArray = oraConn.createARRAY("typeName", array);

如果您从ListObject 开始

List<Object> list = ...
...
Object[] array = list.toArray();
oracle.jdbc.OracleDriver ora = new oracle.jdbc.OracleDriver();
java.sql.Connection conn = ora.defaultConnection();
oracle.jdbc.OracleConnection oraConn = (oracle.jdbc.OracleConnection) conn;
java.sql.Array sqlArray = oraConn.createARRAY("typeName", array);

【讨论】:

  • 谢谢,虽然这适用于对象的 ArrayList 吗?
  • 另外,在我的例子中,“typeName”是什么,你能举一个完整的例子吗?
  • @java123999 我编辑了答案以展示如何使用 List。参数类型名称定义为:typeName - 创建对象的SQL类型名称
  • 感谢编辑。那么在我的情况下,Person 对象列表的 typeName 是什么?
  • 是sql类型。我不知道你用的什么名字,可能是 Person?
猜你喜欢
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 2013-10-10
  • 2020-10-12
相关资源
最近更新 更多