java给存储过程传数组问题
各位大侠,你们好。本人想在java里面把一个数组(字符串)传到oracle的存储过程,但在传的过程序出错了。请各位赐教,不胜感激!
我先在oracle中创建类型:
create or replace type strvarry is table of varchar2(100);
oracle存储过程头为:
Procedure GroupSend(
mobiles strvarry, --手机群号
counts int, --群发个数
childen_num varchar2, --子号
mt_msg varchar2, --下发信息
ret out Integer
);
java
代码如下:
public static final int groupSendMsg(String mobiles[],String childennum,String msg)
{
Connection dbConn = null;
CallableStatement cstmt = null;
int result = 1;
try{
dbConn = DBOPTION.getConection();
System.out.println("=====1");
cstmt = dbConn.prepareCall("{call PK_CHAT_DOWNMESSAGE.GroupSend(?,?,?,?,?)}");
System.out.println("=====2");
oracle.sql.ArrayDescriptor destarray = oracle.sql.ArrayDescriptor.createDescriptor("strvarry",dbConn);
System.out.println("=====3");
oracle.sql.ARRAY array = new oracle.sql.ARRAY(destarray,dbConn,mobiles);
System.out.println("=====4");
cstmt.setArray(1,array);
System.out.println("=====5");
cstmt.setInt(2,mobiles.length);
cstmt.setString(3,childennum);
cstmt.setString(4,msg);
cstmt.setInt(5,0);
cstmt.registerOutParameter(5,Types.INTEGER);
cstmt.executeQuery();
result = cstmt.getInt(4);
System.out.println("====="+result);
return result;
}
catch (SQLException sqle) {
System.out.println("error sqle "+ sqle.toString());
return result;
}
catch(Exception e)
{
System.out.println("error e ="+e.toString());
return result;
}
finally {
DBOPTION.closeStatement(cstmt);
DBOPTION.closeConnection(dbConn);
}
}
运行到oracle.sql.ArrayDescriptor destarray = oracle.sql.ArrayDescriptor.createDescriptor("strvarry",dbConn);的时候出错了。请各位指教。谢谢!