Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 可滚动游标是服务器端构造吗?_Sql_Oracle_Jdbc_Cursor - Fatal编程技术网

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

Sql 可滚动游标是服务器端构造吗?,sql,oracle,jdbc,cursor,Sql,Oracle,Jdbc,Cursor,一般来说,游标是一个概念。 当我通过jdbc运行一个简单的select*查询时,我会得到一个结果集。这个结果集存储在客户机上,对吗?但在DBMS下面打开了一个游标。由于数据库是通过.stateless Http API/rest服务访问的,因此连接关闭,我的客户机中有结果集。如果结果集存储在客户机上,我可以对其执行任何操作;倒退、前进等 那么滚动光标的意义是什么呢?它是否意味着与数据库的有状态连接,结果集存储在服务器的内存中而不是客户端的内存中? 这是一种显式打开游标而不是使用基于集合的SQL的

一般来说,游标是一个概念。 当我通过jdbc运行一个简单的select*查询时,我会得到一个结果集。这个结果集存储在客户机上,对吗?但在DBMS下面打开了一个游标。由于数据库是通过.stateless Http API/rest服务访问的,因此连接关闭,我的客户机中有结果集。如果结果集存储在客户机上,我可以对其执行任何操作;倒退、前进等

那么滚动光标的意义是什么呢?它是否意味着与数据库的有状态连接,结果集存储在服务器的内存中而不是客户端的内存中? 这是一种显式打开游标而不是使用基于集合的SQL的情况吗

这是否也意味着锁定行?

在Oracle(至少在版本18之前)中,可滚动游标存储在客户端。
有关这方面的更多信息,请参见以下文档:


用于结果集可滚动性的Oracle JDBC实现

因为基础服务器不支持可滚动游标, Oracle JDBC必须在单独的层中实现可滚动性

重要的是要意识到这是通过使用 客户端内存缓存,用于存储可滚动结果集的行

注意:因为任何可滚动结果集的所有行都存储在 客户端缓存,一种结果集包含多个 行、多列或非常大的列可能会导致客户端错误 Java虚拟机(JVM)将失败。不要为文件指定可滚动性 大型结果集


结果集通常是状态完整的,不存储在客户机上(为提高性能而提取行的缓冲区除外),但具体行为取决于特定的数据库系统及其JDBC驱动程序。然而,我认为你的问题太宽泛了。请编辑您的问题,使其更具体。