批处理出错 语句拿到数据库里可以执行 操作一条记录可以多了就会报错 报命令未正确结束 在线等啊!!!!!

to_fly 2012-10-31 03:21:34
java.sql.BatchUpdateException: 批处理中出现错误: ORA-00933: SQL 命令未正确结束
DELETE i_define WHERE CodeId = 'micro_query' AND userid = '0' and id = '13208'

上面是报错信息
我删除一条记录可以,但是一旦大于1条就开始报上面的错
sql = " DELETE i_define WHERE CodeId = '" + CodeId + "' AND userid = '" + userid + "'";
System.out.println( tmp_chk+"--tmpchk--" + tmp_chk2);
if( !tmp_chk.equals("")){
String[] array_z = tmp_chk.split(",");
for(int i_z1 = 0; i_z1<array_z.length;i_z1++){
sql2 = sql + " and id = " + array_z[i_z1];
System.out.println(sql2+ "--sql6-"+i_z1);
stmt_batch.addBatch(sql2);//就是说这里错 我删除一条记录可以,但是一旦大于1条就开始报上面的错
}
/*这段不行我才用上面的for循环,我想的就是一起不行看看分开一条一条的行不行,可惜还是不行..
sql2 = sql + " AND id IN (" + tmp_chk + ");";
System.out.println(sql2+ "--sql6");
sql2 = sql2.replace(",","||");

stmt_batch.addBatch(sql2);*/
//stmt_z.executeUpdate(sql2);
}
......省略代码
try{
stmt_batch.executeBatch();//
operate_tag = 1;
}
catch(Exception e){
out.print(e+"<p>" + sql2);
operate_tag = -1;
}

stmt_batch.close();

下面是对应的控制台输出

DELETE I_MICRO_QUERY_ITEM WHERE userid='0' AND id IN('13207','13208')--sql2
DELETE I_MICRO_QUERY WHERE userid='0' AND id IN('13207','13208')--sql2
DELETE i_define_privi WHERE CodeId='micro_query' AND userid='0' AND id IN('13207','13208')--sql4
'13207','13208'--tmpchk--
DELETE i_define WHERE CodeId = 'micro_query' AND userid = '0' and id = '13207'--sql6-0
DELETE i_define WHERE CodeId = 'micro_query' AND userid = '0' and id = '13208'--sql6-1
...全文
305 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
to_fly 2012-11-01
  • 打赏
  • 举报
回复
解决了 不是这里的问题 是我上面在拼语句的时候少个循环 这个页面乱报错伤不起啊.. 还是谢谢大家了
AlexMoonshadow 2012-10-31
  • 打赏
  • 举报
回复
不要批量执行sql了,一句一句执行吧,addBatch这个方法的源码也看不到,不清楚最后它是怎么拆了执行的。
我只是一粒沙 2012-10-31
  • 打赏
  • 举报
回复
方便的话,我给你调试下,看看什么情况,1309000237

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧