CURSOR 和 REF CURSOR 作为 JDBC 数据类型
Posted
技术标签:
【中文标题】CURSOR 和 REF CURSOR 作为 JDBC 数据类型【英文标题】:CURSOR and REF CURSOR as a JDBC data type 【发布时间】:2011-06-30 22:52:17 【问题描述】:许多 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 是否有类似的“供应商特定类型”?
【问题讨论】:
是的,尤其是考虑到几乎每个数据库都有游标。虽然我也只使用过 Oracle,但在 Google 上快速搜索在 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));
【讨论】:
以上是关于CURSOR 和 REF CURSOR 作为 JDBC 数据类型的主要内容,如果未能解决你的问题,请参考以下文章
PLSQL中显示Cursor隐示Cursor动态Ref Cursor差别
PLSQL中显示Cursor隐示Cursor动态Ref Cursor差别