[英]Cursor in Select Clause of an sql Statement in JDBC
I have a query in which I am using Cursors in Select clause along with some other columns Values.I wanted to iterate through its result via ResultSet in Java.But couldn't find a way to get the Cusror from the result set.Is it possible to do so?Can anyone help me? 我有一个查询,其中在Select子句中使用Cursors以及其他一些列Values。我想通过Java中的ResultSet遍历其结果,但是找不到从结果集中获取Cusror的方法。可能这样做吗?有人可以帮助我吗?
For eg 例如
select name, roll_no,
cursor (select subj1
from Subject
where id = 'abc'
) as cusr1
from student
Here would be a generic way to read columns from a ResultSet. 这是从ResultSet读取列的通用方法。
while (resultSet.next()) { //Read every row
int columnCount = resultSet.getMetaData().getColumnCount();
for (int column = 1; column <= columnCount; column++) { //Read every column
String columnName = resultSet.getMetaData().getColumnName(column);
Object value = resultSet.getObject(columnName);
if (value != null) {
doSomething(columnName, value);
}
}
}
I assume you are using an Oracle DB. 我假设您正在使用Oracle数据库。 I also assume Java 7 or higher (try with resources).
我还假定Java 7或更高版本(尝试使用资源)。
You are using a Cursor Expression in your SQL. 您在SQL中使用游标表达式。
The Oracle JDBC Driver returns a java.sql.Resultset
object when you call Resultset.getObject(column number|column label)
for a Cursor Expression column. 当您为游标表达式列调用
Resultset.getObject(column number|column label)
时,Oracle JDBC驱动程序将返回java.sql.Resultset
对象。
So it is safe to cast: 因此,投放是安全的:
try (Resultset innerResultset = (Resultset) outerResultset.getObject(column number/label)) { while(innerResultset.next()) { ... }
One comment: In many cases, for example when creating "master-detail" queries, you use a correlated Cursor Expression, meaning there is a join on a table that appears in the outer query. 一个评论:在许多情况下,例如,当创建“主从”查询时,您使用了相关的“光标表达式”,这意味着在外部查询中出现的表上存在联接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.