java调用存储过程, 传递数组
create or replace type ArrayList as table of varchar2(64);
create or replace PROCEDURE PROC_TEST
(res IN ArrayList
,rest OUT VARCHAR2)
AS
BEGIN
dbms_output.put_line(res.count);
rest := res(res.count);
END PROC_TEST;
// java 调用
public void Test() throws Exception
{
if (m_con == null)
System.out.println("Connection is error!");
// 类型名必须大写
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("ARRAYLIST", m_con);
String[] actName = { "Get", "Put", "Featch"};
ARRAY arrayAct =new ARRAY(descriptor, m_con, actName);
CallableStatement proc = null;
String sql = "{call PROC(?,?)}";
proc = m_con.prepareCall(sql);
proc.setArray(1, arrayAct);
proc.registerOutParameter(2, Types.VARCHAR);
boolean bFlag = proc.execute();
System.out.println(bFlag);
System.out.println("返回值:");
System.out.println(proc.getString(2));
}
用上面的方法我创建了存储过程, 输入类型是数组
用下面的java代码调用, 但数组内的数据无法传进去, 跟踪结果就是null
大虾们帮我分析分析, 是哪里出错了!