【发布时间】:2011-10-23 13:35:54
【问题描述】:
我的代码已经使用存储过程将字符串数据存储在 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;
我需要修改它以包含一个对象列表。例如:
// 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);
}
}
我不清楚如何在存储过程中支持对象列表。
有没有人有传递和解析对象列表以存储过程的经验?任何人都可以提供一些示例代码吗?
【问题讨论】:
-
什么是
OracleStoredProcedureBase? -
我了解您是否在使用过程时遇到问题,但是您能否为每个列表项创建和更新查询并在单个事务中执行它们?
-
OracleStoredProcedureBase 是 org.springframework.jdbc.object.StoredProcedure 的自定义包装器。
-
杰里米:是的,我可以,而且在某些情况下也可以。在这种情况下,我没有。
-
使用 [CallableStatement][1] 它有一个 setArray 方法,可用于将数组发送到存储过程。您也可以通过这种方式发送其他对象 [1]:download.oracle.com/javase/6/docs/api/java/sql/…
标签: java oracle stored-procedures plsql plsqldeveloper