参考光标和结果集

Posted

技术标签:

【中文标题】参考光标和结果集【英文标题】:Ref Cursor and Resultset 【发布时间】:2011-07-12 18:41:23 【问题描述】:

我正在从我的 java 类中调用一个存储过程,它返回一个 ref 游标,我正在从游标中提取结果集并迭代结果集以供我使用,现在我的问题是这个

返回的 ref 游标是包含所有数据还是在游标上调用 getObject 以获取结果集时再次进入数据库服务器?

问候

【问题讨论】:

【参考方案1】:

Fetch Size 是您要查找的 Oracle 参数。如果您的应用程序涉及将数据从服务器传输到客户端,这是一个非常重要的设置。

您可以使用此方法为您的语句设置提取大小。

void setFetchSize(int rows) throws SQLException

http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/resltset.htm#sthref1000

从上面的链接...

默认情况下,Oracle JDBC 执行查询时,会收到结果 从数据库游标一次设置 10 行。这是默认设置 Oracle 行预取值。您可以更改检索到的行数 通过更改行预取每次访问数据库游标 值(有关详细信息,请参阅“Oracle 行预取”)。

当语句对象执行查询时,获取的大小 语句对象被传递给生成的结果集对象 询问。但是,您也可以在结果集中设置提取大小 对象来覆盖传递给它的语句获取大小。

【讨论】:

【参考方案2】:

通常在客户端上会有一个与游标关联的缓冲区。当您请求第一行时,oracle 服务器将用游标的行数据填充缓冲区。如果不是所有的行数据都适合缓冲区,则对游标的一些后续调用将从服务器获取接下来的 n 行。

【讨论】:

以上是关于参考光标和结果集的主要内容,如果未能解决你的问题,请参考以下文章

结果集到 Android 光标

JDBC中结果集的“Kludge”[重复]

iterator接口的hasnext方法、next方法和ResultSet结果集的next方法的区别

JDBC结果集

JDBC的结果集

如何在 Oracle 中合并结果集?