参考光标和结果集

时间:2011-07-12 18:41:24

标签: java oracle cursor

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

返回的引用游标是否包含其中的所有数据,或者当在结果集的游标上调用getObject时,它还会再次转到数据库服务器?

问候

2 个答案:

答案 0 :(得分:5)

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行预取值。您可以更改检索的行数   通过更改行预取来每次访问数据库游标   value(有关更多信息,请参阅“Oracle Row预取”)。

     

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

答案 1 :(得分:4)

通常,与光标关联的客户端上会有一个缓冲区。当您要求第一行时,oracle服务器将使用游标的行数据填充缓冲区。如果并非所有行数据都适合缓冲区,则对游标的一些后续调用将从服务器获得下一行。