Java中从PL-SQL表中获取数据作为OUT参数
我正在从java代码执行一个过程,它有两个out参数,其中一个是对象表。下面是软件包的概述Java中从PL-SQL表中获取数据作为OUT参数,java,oracle,jdbc,Java,Oracle,Jdbc,我正在从java代码执行一个过程,它有两个out参数,其中一个是对象表。下面是软件包的概述 PROCEDURE SalesProc ( p_S_table IN t_s_table , p_T_table IN OUT t_t_table , x_message OUT VARCHAR2 ) t_表是IN-OUT参数,其中包含多个字符串和数字。在执行包之前
PROCEDURE SalesProc (
p_S_table IN t_s_table
, p_T_table IN OUT t_t_table
, x_message OUT VARCHAR2
)
t_表是IN-OUT参数,其中包含多个字符串和数字。在执行包之前,我创建了一个SalesObject数组,并将其设置到其中
在这里,目的是使用resultSet从t_表中获得一些值
我正在努力工作的来源是:
callstmt.registerOutParameter(2, Types.ARRAY,"T_TABLE");
callstmt.setArray(2, mySalesObjectArray);
callstmt.execute();
java.sql.Array aa = callstmt.getArray(2);
ResultSet rs = aa.getResultSet();
while(rs.next()){
String ss = rs.getString(1);
}
下面一行给出了“
java.sql.exception
”
我还尝试将其转换为对象类型,如下所示
salesObject[] sArray = (salesObject[])callstmt.getArray(2);
这就是抛出classCastException。
“classcastException.cannotcast java.lang.Object[2][id=16062]到java.lang.String[]
”
如何避免这些异常?您有3个参数,计数从最左侧参数的1开始:
salesObject[] sArray = (salesObject[])callstmt.getArray(2);
您的salesObject
类应该实现ORAData
或SQLData
。
SQLData
似乎更好 你有错误吗?T_表的定义是什么?等等。你需要给我们更多的合作机会。“它不起作用”请告诉我们细节。Inb什么方式不起作用?描述观察到的行为,包括错误消息等。如果你不提供详细信息,你将得不到答案。你能发布基本过程的结构(最好是语法)吗?我编辑了问题。请查收。感谢您对Object[]
:Object[]sArray=callstmt.getArray(2)
salesObject[] sArray = (salesObject[])callstmt.getArray(2);