在java中执行存储过程后的ClassCastException

时间:2013-09-16 11:58:28

标签: java oracle stored-procedures spring-jdbc

在使用spring-jdbc执行使用Oracle编写的存储过程后,我得到 ClassCastException

这是给出问题的代码片段,这里的数据是我从过程中得到的List:

for(Object[] obj :data){

}

以下是错误:

java.lang.ClassCastException: oracle.jdbc.driver.OracleResultSetImpl cannot be cast to [Ljava.lang.Object

我认为问题是从程序中获取 OUT 游标后如何在Java代码中使用它,即如何从中提取值?

不幸的是,谷歌搜索并没有帮助我。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

data不是数组的列表(或数组)。它是接口oracle.jdbc.driver.OracleResultSet的实现。所以你不能使用for-each循环迭代它。

它还实现了ResultSet,它定义了方法next()。 因此,您可以使用data

迭代while-loop
while (data.next()){
    Object obj = data.getObject(col);
    // do somthing with obj
}

方法next()将光标移动到下一行。 col可以是列索引或标签。

Here您可以找到有关使用ResultSet

的示例