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