我的程序如下
create or replace package TTTT is
  type CarBoatInfo is ref cursor;
  TYPE testtype is record
  (aa number(1),
   bb varchar2(10));
   TYPE vtest is VARRAY(10) of TESTTYPE;
  PROCEDURE test_ret(abc out vtest);
end TTTT;
create or replace package body TTTT isPROCEDURE test_ret(abc out vtest) IS
ret testtype;
BEGIN
if abc is NULL then
dbms_output.put_line('aa is NUll');
end if;
ret.aa := 1;
ret.bb := '1';
abc := vtest(ret);
END test_ret;我在JAVA中调用这个存储过程
    java.sql.ResultSet rs= null;
    java.sql.CallableStatement cs= null;
    java.sql.Connection conn= null; 
    try {
        conn= this.getConnection();
    } catch (BaseException ex) {
        throw new BaseException("E020023", ex);
    }
    try {
        try {
            conn.setAutoCommit(true);
            oracle.jdbc.OracleCallableStatement stmt = (oracle.jdbc.OracleCallableStatement)conn.prepareCall("{call tttt.test_ret(?)}");
oracle.jdbc.OracleTypes.ARRAY, "tttt.VTEST"); 
stmt.execute();  //执行到这里抛出异常
不知道事什么原因 ,各位大虾救命!