Java Oracle DB是否支持每个连接的多个(并行)操作?

Java Oracle DB是否支持每个连接的多个(并行)操作?,java,oracle,connection,Java,Oracle,Connection,我的Java应用程序需要将光标保持在Oracle DB上一段时间。在此期间,必须作出其他DB声明。这是否需要单独的数据库连接,或者可以使用相同的数据库连接(游标连接) 谢谢。Oracle对MSSQL人员所谓的MARS(多个活动结果集)没有问题 在很多PL/SQL代码中都可以看到这种情况,因此PL/SQL“只是”SQL引擎的客户机,就像Java代码一样: for a in (select field1, field2 from table1) loop for b in (select * f

我的Java应用程序需要将光标保持在Oracle DB上一段时间。在此期间,必须作出其他DB声明。这是否需要单独的数据库连接,或者可以使用相同的数据库连接(游标连接)


谢谢。

Oracle对MSSQL人员所谓的MARS(多个活动结果集)没有问题

在很多PL/SQL代码中都可以看到这种情况,因此PL/SQL“只是”SQL引擎的客户机,就像Java代码一样:

for a in (select field1, field2 from table1) loop
  for b in (select * from table2 where SomeField = a.Field1) loop
    ...
  end loop;
end loop;

不过,别相信我的话。您可以自己在Java中创建这样的嵌套循环。

您可以使用数据库池的概念

它提供了一个数据库连接池,以便在需要时可以从该池中获得数据库连接


它还优化了内存,因为数据库连接和关闭是一个繁重的过程。

当然,在同一连接上发出其他查询时,您可以按住多个打开的游标。但是,在打开第一个游标时,不可能发出其他查询或语句。这是因为在Oracle会话的任何时间点上,只能有一个请求处于活动状态(即正在执行)。

唯一的限制是一条语句在给定时间只能有一个结果集。请注意,一条语句可以生成多个结果集,但您必须按顺序访问它们(使用
getNextResult()

为了能够有多个打开的结果集/游标,您需要多个
java.sql.Statement
对象


单个连接只能有一个活动(即正在运行)语句。因此,如果需要多个打开的游标(结果集),则需要依次运行它们(一个接一个),每个游标都有自己的
语句
对象

你试过了吗?结果是什么?你说的是什么类型的Java应用程序?Oracle非常适合处理一系列语句的专用会话。然而,大多数Java应用程序都是web应用程序,web应用程序通常使用无状态协议和连接池;这意味着很难为特定用户保留一个数据库会话,以便在一段时间内发出命令。所以,请提供更多细节。你的意思是“平行”还是“顺序”?Oracle支持并行查询/DML,但这是一个不同的问题。问题的关键是OP不需要多个连接,但他想知道他是否可以在保持光标打开的同时执行其他SQL—他可以!是的,我可以(也可能会)使用池,但正如James指出的,问题是关于使用相同的连接。