在做一个应用,页面上有100多条数据,通过复选框选择,在java中调用oracle存储过程把这100多条数据的所有信息[每条4个字段],存入数据库,存储过程需要传入的参数为varchar2,在第一次调用时,发现,数据量太大,导致出错[共158条,每次只能存入114条],所以,打算,把100多条数据,首先都在java中拿到,然后,分批调用过程,结果发现,当我打算一次导入100条,剩余的再接着导入时,结果出现了同样的错误,非常奇怪!!!以前不加这种条件,一次还能存入114,现在分批调用居然和一次全部存入出现同样的错误,如题,怎么回事啊,后来还发现一个问题,就是如果想一次导入60条,也不行,也抱同样的错,下面是关键代码
String params=URLDecoder.decode(req.getParameter("args").trim(), "utf-8");
String transString="";
String[] sms=params.split("@");
Map map = new HashMap();
ISms smsImpl = new SmsMonitorImpl(map);
if(sms.length<61)
{
for(int i=0;i<sms.length;i++)
{
String[] specSms=sms[i].split(",");

String rtval=SmsSendUtil.rtSmsInfo(specSms[1],specSms[2]);

sms[i]=sms[i]+","+rtval;
transString=transString+sms[i]+"@";

}
}
map.put("smsHistory",transString);
smsImpl.saveSmsHistory();
传入的数据形式是
A,AA,AAA,AAAAA@B,BB,BBB,BBBB@调用的存储过程为procedure saveSmsHistory(v_sms_history in varchar)is 
 v_username varchar2(100);
 v_phone varchar2(100);
 v_sms_content varchar2(100);
 v_deptid varchar2(100);
 v_sendstate varchar2(100);
 v_a varchar2(3000);--记录分离@后的每一个字符串
 v_pos_a int;
 begin
  v_pos_a:=0;
  loop
     v_a := Sf_Token_Str(v_sms_history, v_Pos_a);--这个函数用于通过@分离数据
     v_username:=Get_StrArrayStrOfIndex(v_a,',',0);--这个函数通过逗号,取出各个相应值
     v_phone:=Get_StrArrayStrOfIndex(v_a,',',1);
     v_sms_content:=Get_StrArrayStrOfIndex(v_a,',',2);
     v_deptid:=Get_StrArrayStrOfIndex(v_a,',',3);
     v_sendstate:=Get_StrArrayStrOfIndex(v_a,',',4);
  exit when v_a is null;     
     insert into  AAA_SMS_HISTORY(USERNAME,PHONE,SMSCONTENT,DEPTID,SENDSTATE) values(v_username,v_phone,v_sms_content,v_deptid,v_sendstate);
  end loop;
       
 end;