4

许多 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 是否有类似的“供应商特定类型”?

4

1 回答 1

4

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));
}
于 2016-05-26T22:00:18.147 回答