【发布时间】:2014-08-13 01:36:38
【问题描述】:
在使用 JDBC Batch Insert 语句时,有什么方法可以使用 JAVA 中的返回子句获取受影响行的值?我能够获得受影响的单行所需的值。但不适用于所有批量插入?
代码:
try {
String query = "INSERT INTO temp ( "
+ "org_node_id, org_node_category_id, org_node_name, "
+ "customer_id, created_by, created_date_time, "
+ "updated_date_time, activation_Status )"
+ " VALUES (seq_org_node_id.nextval, 11527, 'Abcd', 9756, 1, sysdate, sysdate, 'AC')"
+" returning org_node_id, org_node_name INTO ?, ?";
con = DBUtils.getOASConnection();
OraclePreparedStatement ps = (OraclePreparedStatement) con.prepareStatement(query);
ps.registerReturnParameter(1, Types.INTEGER);
ps.registerReturnParameter(2, Types.VARCHAR);
ps.execute();
ResultSet rs = ps.getReturnResultSet();
rs.next();
System.out.println("Org ID : "+ rs.getInt(1));
System.out.println("Org Name : "+ rs.getString(2));
} catch (SQLException e) {
e.printStackTrace();
}
【问题讨论】:
-
请展示你实现的代码
-
是的,这是单次插入,但是如何为批量插入获得相同的结果?我在这方面遇到了问题。
-
@Somenath 看看this,也许会有帮助。
-
rs.next();必须是 while(rs.next()) 才能显示所有结果集 -
如果您查看 JDBC 开发人员指南docs.oracle.com/en/database/oracle/oracle-database/18/jjdbc/… 中的第 4.6.4 章 DML 返回的限制,您会看到“DML 返回不能与批量更新相结合。”。
标签: oracle jdbc batch-insert