如何传递List<>到Oracle存储过程

时间:2011-08-09 20:24:27

标签: java oracle stored-procedures plsql plsqldeveloper

我的代码已经使用存储过程将String数据存储在SQL表中:

// my DAO
public class SomeProcedure extends StoredProcedure {
    public void process (String data) {
        Map<String, Object> map = new HashMap<String, Object>();
        hm.put("customData", data);
        Map<?,?> result = super.execute(hm);
    }
}

// My pks
procedure storeData (
    data_p in someTable.data%type,
    data_o out someTable.data%type,
)
as
begin
    insert into someTable
...
end storeData;

我需要修改它以包含一个对象List。例如:

// my DAO
public class SomeProcedure extends StoredProcedure {
    public void process (String data, List<someObject> list) {
        Map<String, Object> map = new HashMap<String, Object>();
        hm.put("customData", data);
        hm.put("customList", list);
        Map<?,?> result = super.execute(hm);
    }
}

我不清楚如何在存储过程中支持对象列表。

有没有人有经验传递和解析对象列表来存储过程?任何人都可以提供一些示例代码吗?

1 个答案:

答案 0 :(得分:1)

我在我的应用程序中使用此类调用(现在无法访问源代码),但它看起来像http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:712625135727

我记得的一个问题就是战斗,是运行时的SQL异常,通过在ojdbc14旁边的类路径中添加orai18n.jar解决(对于oracle 10g并传递字符串列表)