我从我的java类调用一个存储过程,它返回一个引用游标,我从游标中提取结果集并迭代结果集供我使用,现在我的问题是这个
返回的引用游标是否包含其中的所有数据,或者当在结果集的游标上调用getObject时,它还会再次转到数据库服务器?
问候
答案 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服务器将使用游标的行数据填充缓冲区。如果并非所有行数据都适合缓冲区,则对游标的一些后续调用将从服务器获得下一行。