求求高手帮忙解决问题,先谢了,在线等!!!!java code::
public void updateTable(String[][] data, int csvSize) {
        errorList = new ArrayList();
        Connection conn = null;
        String updateStatement = null;
        CallableStatement pc= null;
        try {
          conn = this.getCurrentConnect();
          StructDescriptor strDesc = StructDescriptor.createDescriptor("STRTYPE",conn.getMetaData().getConnection());
          ArrayDescriptor arrDesc = ArrayDescriptor.createDescriptor("ARRTAB", conn.getMetaData().getConnection());
          Object[] arrobj=new Object[csvSize];
          for (int i = 0; i < csvSize; i++) {
            Object[] csvLine = {data[i][0].trim(),data[i][1].trim(),data[i][2].trim(),data[i][3].trim(),data[i][4].trim(),data[i][5].trim(),data[i][6].trim()};
            STRUCT csvLineStruct = new STRUCT(strDesc, conn.getMetaData().getConnection(), csvLine);
            arrobj[i]=csvLineStruct;
          }
            ARRAY csvTable = new ARRAY(arrDesc, conn.getMetaData().getConnection(), arrobj);
            updateStatement = gloCfg.getInitParameter("sql-updatetable");
            pc = conn.prepareCall(updateStatement);
            pc.setObject(1, csvTable);
            pc.setInt(2, csvSize);
            //execute the Update
            pc.execute();
            conn.commit();
            logger.info("success");
        }
        catch (SQLException se) {
          se.printStackTrace();
          logger.error("error in method updateTable() because of: " +
                       se);
          errorList.add("The error " +
                        se.getMessage().substring(se.getMessage().lastIndexOf(":"),
                                                  se.getMessage().length()));
        }
      }procedure code :CREATE OR REPLACE PROCEDURE InsDialerCharge(pa_array in out arrtab,
                                            pi_record_count       IN  BINARY_INTEGER
                                            )
    AS  
        li_num       PLS_INTEGER    := 1;
   BEGIN 
            for li_num in 1 .. pi_record_count 
         loop
            insert into RAMT_DIALER_CHARGES(DialerChargeId,
                                            DialerChargeDescription,
                                            BillCycleStartdate,
                                            BillCycleEnddate,
                                            Bill_hours,
                                            Dialer_cost)
                                            
values(RAMT_DILAER_CHRG_SEQ.nextval,
                   pa_array(li_num).col3,
   to_date(pa_array(li_num).col4,'yyyy-mm-dd'),
   to_date(pa_array(li_num).col5,'yyyy-mm-dd'),
   to_number(pa_array(li_num).col6),
   to_number(pa_array(li_num).col7));
 
        end loop;
        commit;  
   EXCEPTION
       WHEN others THEN
            rollback;            
          raise_application_error(sqlcode,'Failed to insert data to table RAMT_DIALER_CHARGES: ' || sqlerrm);  
    END InsDialerCharge;
/
error:java.sql.SQLException: ORA-00900: invalid SQL statement
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:656)
at com.gepower.geep.geglobalsourcing.rams.service.UpdateTableSvcImpl.updateTable(UpdateTableSvcImpl.java:113)
at com.gepower.geep.geglobalsourcing.rams.common.ReadCsvCronCommon.main(ReadCsvCronCommon.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.ge.crd.services.cron.DefaultCronEvent.run(DefaultCronEvent.java:122)
at com.ge.dialect.util.ThreadPool$PooledThread.run(ThreadPool.java:175)