我正在从java代码执行一个过程,它有2个参数,其中一个是Object表。这是包
的概述PROCEDURE SalesProc (
p_S_table IN t_s_table
, p_T_table IN OUT t_t_table
, x_message OUT VARCHAR2
)
t_table是IN OUT参数,其中包含多个String和Numbers。在执行包之前,我创建了一个SalesObject数组并设置它。
这里,目的是使用resultSet从t_table获取一些值。
我想要开始工作的来源是:
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
”
String ss = rs.getString(1);
我也尝试将其转换为Object类型,如下所示
salesObject[] sArray = (salesObject[])callstmt.getArray(2);
抛出classCastException。
“classcastException.Cannot cast java.lang.Object[2][id=16062] to java.lang.String[]
”
如何避免这些例外?
答案 0 :(得分:0)
你有3个参数,计数从最左边参数的1开始:
我使用Oracle作为DBMS但没有使用IN / OUT参数但我确信如果你将程序改为函数(因为函数返回一些东西),它接受IN参数并返回OUT参数,相同的代码将起作用。
至于铸造:
salesObject[] sArray = (salesObject[])callstmt.getArray(2);
您的salesObject
课程应实施ORAData
或SQLData
。
SQLData
似乎更好。