在oracle中一次执行多条语句
来源:互联网 发布:求仁得仁 又何怨乎 编辑:程序博客网 时间:2024/05/16 14:15
工作中需要一次执行多条语句,本来想直接使用sql拼接成一个字符串进行批处理,原sql如下:
String sql = "";for(int i=0; i<deviceInfo.getDevice_ip().length; i++){ if(deviceInfo.getDevice_ip()[i] != null && !deviceInfo.getDevice_ip()[i].equals("")){ String sqlu = "insert into tab_upperdevice (device_id,device_ip,port_type,shelf,frame,slot,port) values('" + id + "','" + deviceInfo.getDevice_ip()[i] + "','" + deviceInfo.getPort_type()[i] + "','" + deviceInfo.getShelf()[i] + "','" + deviceInfo.getFrame()[i] + "','" + deviceInfo.getSlot()[i] + "','" + deviceInfo.getPort()[i] +"')" + ";"; sql = sql + sqlu; } }
发现执行不了,经过查找资料,发现oracle需要加begin end;字段才能执行多条语句。
修改后的sql如下:
beginString sql = "";for(int i=0; i<deviceInfo.getDevice_ip().length; i++){ if(deviceInfo.getDevice_ip()[i] != null && !deviceInfo.getDevice_ip()[i].equals("")){ String sqlu = "insert into tab_upperdevice (device_id,device_ip,port_type,shelf,frame,slot,port) values('" + id + "','" + deviceInfo.getDevice_ip()[i] + "','" + deviceInfo.getPort_type()[i] + "','" + deviceInfo.getShelf()[i] + "','" + deviceInfo.getFrame()[i] + "','" + deviceInfo.getSlot()[i] + "','" + deviceInfo.getPort()[i] +"')" + ";"; sql = sql + sqlu; } }end;
修改后的语句依然执行不了,不知道是啥原因。
最终解决方法是使用List来执行,代码:
List<String> sqluList = new ArrayList<String>(); for(int i=0; i<deviceInfo.getDevice_ip().length; i++){ if(deviceInfo.getDevice_ip()[i] != null && !deviceInfo.getDevice_ip()[i].equals("")){ String sqlu = "insert into tab_upperdevice (device_id,device_ip,port_type,shelf,frame,slot,port) values('" + id + "','" + deviceInfo.getDevice_ip()[i] + "','" + deviceInfo.getPort_type()[i] + "','" + deviceInfo.getShelf()[i] + "','" + deviceInfo.getFrame()[i] + "','" + deviceInfo.getSlot()[i] + "','" + deviceInfo.getPort()[i] +"')"; sqluList.add(sqlu); this.log.info("添加上联设备sql->" + sqlu); } }
之后把这个List传给总的List:
List<String> sqlList = new ArrayList<String>();sqlList.addAll(createUpperDeviceSql(deviceInfo, id));
然后把这个List转成数组传给批处理执行:
String[] sqlArr = sqlList.toArray(new String[sqlList.size()]); return jt.batchUpdate(sqlArr);
0 0
- 如何在Oracle中一次执行多条sql语句
- 在oracle中一次执行多条语句
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- Oracle中怎样一次执行多条sql语句
- 如何在Oracle中一次执行多条sql语句,结束符很重要
- 在Oracle中一次执行多条sql语句,结束符很重要
- Oracle中一次执行多条SQL语句需要注意的地方
- mybatis一次执行多条sql语句
- MyBatis一次执行多条SQL语句
- MyBatis 一次执行多条SQL语句
- MyBatis一次执行多条SQL语句
- MyBatis一次执行多条SQL语句
- MyBatis一次执行多条SQL语句
- mybatis一次执行多条delete语句
- Java一次执行多条SQL语句
- Oracle一次执行(插入、更新、删除)多条语句的办法
- MySQL 一次执行多条语句的实现及常见问题
- malloc、calloc、realloc函数剖析
- 最长子序列和Maximum Continuous Partial SumST(AC)
- 图片上传
- java 获取系统中默认的编码
- 2016 Multi-University Training Contest 1 1004 hdu 5726 二分+RMQ
- 在oracle中一次执行多条语句
- RGB图像语义分割前沿:CRF as RNN
- IOS警告imgName' used as the name of the previous parameter rather than as part of the selector
- PBR贴图转换2——PBR 作了哪些改变
- 利用ffmpeg和opencv进行视频的解码播放
- oracle+关于"SP2-0618:+无法找到会话标识符。启用检查+PLUSTRACE+角色"错误
- ListView中点击冲突解决方法
- java使用cookie和session
- 10045---Java中的值传递和引用传递