问题描述
应用程序传递到oracle存储过程的字符串数组参数得不到值,都是空值。但是number数组没有问题?请问各位兄弟姐妹,有什么解决的办法?下面是我的代码:/**自定义number数组**/createorreplacetypearray_numistableofnumber;/**自定义varchar2数组**/createorreplacetypearray_varchar2_50istableofvarchar2(50);/**测试存储过程**/createorreplaceproceduretestArray(resNumberinarray_varchar2_50,a_numinarray_num,procResultoutarray_varchar2_50)isbeginprocResult:=newarray_varchar2_50();foriin1..resNumber.CountloopprocResult.EXTEND;procResult(i):=resNumber(i)||'-'||a_num(i)||'-lucifer'||i;endloop;end;/**java调用**/OracleConnectionconn=null;OracleCallableStatementstmt=null;String[]param={"1001","1002","1006"};Integer[]num={1,2,3};stmt=(OracleCallableStatement)con.prepareCall("{calltestArray(?,?,?)}");//类型名必须大写ArrayDescriptordescriptor=ArrayDescriptor.createDescriptor("ARRAY_VARCHAR2_50",con);ArrayDescriptordescriptorNUM=ArrayDescriptor.createDescriptor("ARRAY_NUM",con);stmt.setArray(1,newARRAY(descriptor,con,param));stmt.setArray(2,newARRAY(descriptorNUM,con,num));stmt.registerOutParameter(3,OracleTypes.ARRAY,"ARRAY_VARCHAR2_50");stmt.execute();ARRAYarray=stmt.getARRAY(3);Datum[]data=array.getOracleArray();for(inti=0;i<data.length;i++){System.out.println(i+":"+newString(data[i].shareBytes()));}
解决方案
解决方案二:
该回复于2009-08-18 21:53:52被版主删除