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

时间:2011-05-10 08:30:39

标签: java oracle connection

我的Java应用程序需要将游标保留到 Oracle DB一段时间。在此期间,必须进行其他DB语句。这是否需要单独的DB连接或相同(光标的一个)可以使用?

感谢。

4 个答案:

答案 0 :(得分:6)

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

为了能够拥有多个打开的ResultSet / Cursors,您需要多个java.sql.Statement个对象。

单个连接只能有一个活动(即运行)语句。因此,如果您需要多个打开游标(ResultSets),则需要按顺序(一个接一个)运行它们,每个游标都有自己的Statement对象。

答案 1 :(得分:4)

Oracle对MSSQL人员调用MARS(多个活动结果集)的内容没有任何问题。

你可以在很多PL / SQL代码中看到这种东西,就此而言,PL / SQL就像你的Java代码一样“只是”SQL引擎的客户端:

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自己创建一个这样的嵌套循环。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

Click Here

它提供了一个数据库连接池,因此只要需要,您就可以从池中获取数据库连接。

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

相关问题