许多RDBMS支持某种类型的“CURSOR”类型。从存储过程返回时,这些类型最有用。 Oracle中的一个例子:
TYPE t_cursor_type IS REF CURSOR;
CREATE PROCEDURE p (c OUT t_cursor_type);
使用JDBC调用此过程时,应使用OracleTypes.CURSOR = -10
“JDBC”类型。此类型不是任何标准的一部分,它不会成为Java 7中JDBC 4.1的一部分。
有谁知道JSR家伙是否会考虑将来某个时候将此类型添加到标准中?或者,如果其他RDBMS具有类似的“供应商特定类型”?
答案 0 :(得分:2)
在Java 8 / JDBC 4.2中添加了对REF CURSORS的支持。对游标返回类型使用类型Types.REF_CURSOR
。它们可以通过ResultSet
接口进行迭代。例如:
CallableStatement cstmt = conn.prepareCall("{callmySproc(?)}");
cstmt.registerOutParameter(1, Types.REF_CURSOR);
cstmt.executeQuery();
ResultSet cursor = cstmt.getObject(1, ResultSet.class);
while(cursor.next()) {
System.out.println("Name = " + cursor.getString(1));
}