【发布时间】:2009-10-07 10:57:37
【问题描述】:
给定以下函数:
create or replace FUNCTION "GETADDRESSES"
RETURN sys_refcursor
IS
address_cursor sys_refcursor;
BEGIN
OPEN address_cursor FOR
SELECT * FROM Address;
RETURN address_cursor;
END;
我希望能够在 Java 中对此结果集进行更改并将更改发布回数据库。它在 Java 中调用如下:
String genericQuery = "{ call ? := getAddresses() }";
CallableStatement stmt = connection.prepareCall(genericQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.execute();
ResultSet rs = (ResultSet)stmt.getObject(1);
while (rs.next())
{
System.out.println (rs.getString(2));
rs.updateString(2, "*" + rs.getString(2));
}
stmt.close();
引发异常“只读结果集的无效操作”。有没有办法将此游标作为可以更新并从 Java 发布回数据库的东西返回?我正在使用 Oracle 10g。
谢谢,罗伯
【问题讨论】:
标签: java oracle stored-procedures