Sql 可滚动游标是服务器端构造吗?
一般来说,游标是一个概念。 当我通过jdbc运行一个简单的select*查询时,我会得到一个结果集。这个结果集存储在客户机上,对吗?但在DBMS下面打开了一个游标。由于数据库是通过.stateless Http API/rest服务访问的,因此连接关闭,我的客户机中有结果集。如果结果集存储在客户机上,我可以对其执行任何操作;倒退、前进等 那么滚动光标的意义是什么呢?它是否意味着与数据库的有状态连接,结果集存储在服务器的内存中而不是客户端的内存中? 这是一种显式打开游标而不是使用基于集合的SQL的情况吗 这是否也意味着锁定行?在Oracle(至少在版本18之前)中,可滚动游标存储在客户端。Sql 可滚动游标是服务器端构造吗?,sql,oracle,jdbc,cursor,Sql,Oracle,Jdbc,Cursor,一般来说,游标是一个概念。 当我通过jdbc运行一个简单的select*查询时,我会得到一个结果集。这个结果集存储在客户机上,对吗?但在DBMS下面打开了一个游标。由于数据库是通过.stateless Http API/rest服务访问的,因此连接关闭,我的客户机中有结果集。如果结果集存储在客户机上,我可以对其执行任何操作;倒退、前进等 那么滚动光标的意义是什么呢?它是否意味着与数据库的有状态连接,结果集存储在服务器的内存中而不是客户端的内存中? 这是一种显式打开游标而不是使用基于集合的SQL的
有关这方面的更多信息,请参见以下文档:
用于结果集可滚动性的Oracle JDBC实现 因为基础服务器不支持可滚动游标, Oracle JDBC必须在单独的层中实现可滚动性 重要的是要意识到这是通过使用 客户端内存缓存,用于存储可滚动结果集的行 注意:因为任何可滚动结果集的所有行都存储在 客户端缓存,一种结果集包含多个 行、多列或非常大的列可能会导致客户端错误 Java虚拟机(JVM)将失败。不要为文件指定可滚动性 大型结果集
结果集通常是状态完整的,不存储在客户机上(为提高性能而提取行的缓冲区除外),但具体行为取决于特定的数据库系统及其JDBC驱动程序。然而,我认为你的问题太宽泛了。请编辑您的问题,使其更具体。