可滚动游标是服务器端构造吗?

yacmzcpb  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(256)

一般来说,游标是一个概念。当我通过jdbc运行一个简单的select*查询时,我得到一个结果集。这个结果集存储在客户机上,对吗?但是在dbms下面已经打开了一个游标。由于数据库是通过一个.unstatelesshttpapi/rest服务访问的,所以连接关闭,我的客户机中有结果集。如果结果集存储在客户机上,我可以对它做任何事;向后、向前等
那么可滚动光标的意义是什么呢?它是否意味着到数据库的有状态连接,结果集存储在服务器的内存中而不是客户端的内存中?这是显式打开游标而不是使用基于集的sql时发生的情况吗?
它是否也意味着锁定行?

k2arahey

k2arahey1#

在oracle中(至少在版本18之前),可滚动光标存储在客户端。
有关这方面的更多信息,请参阅以下文档:
17.1 oracle jdbc结果集支持实施概述
用于结果集可滚动性的oraclejdbc实现
因为底层服务器不支持可滚动游标,所以oraclejdbc必须在单独的层中实现可滚动性。
需要注意的是,这是通过使用客户端内存缓存来存储可滚动结果集的行来实现的。
note:because all 任何可滚动结果集的行都存储在客户端缓存中,如果结果集包含许多行、许多列或非常大的列,则可能导致客户端java虚拟机(jvm)失败。不要为大型结果集指定可滚动性。

相关问题