java中调用存储过程并传递list集合参数的方法
来源:互联网 发布:sqlserver导入mdf文件 编辑:程序博客网 时间:2024/04/27 13:56
sql:
CREATE OR REPLACE TYPE test as object(
FID NUMBER,
NUM nVARCHAR2(30),
TESKID NUMBER,
CID NUMBER,
USERCODE nVARCHAR2(100)
)
CREATE OR REPLACE TYPE test_list as table of test
CREATE OR REPLACE PROCEDURE inserttenumber(
v_rec_class_list IN test_list)is
v_rec_class test;
v_count number;
begin
v_count := v_rec_class_list.count;
for i in 1..v_count
loop
v_rec_class:=v_rec_class_list(i);
insert into te_number(id,fid,NUM,teskid,STATE,cid,user_code)values(tenumberseq.nextval,v_rec_class.fid,v_rec_class.NUM,v_rec_class.teskid,'-2',v_rec_class.cid,v_rec_class.USERCODE);
end loop;
end inserttenumber;
java
Connection con = null;
CallableStatement cstmt = null;
try {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext-resource.xml");
DataSource datasource=(DataSource)applicationContext.getBean("dataSource");
List list = new ArrayList();
for (int i = 0; i < sheets.getRows(); i++) {
Cell c01 = sheets.getCell(1, i);
Cell c00 = sheets.getCell(0, i);
if(!"".equals(c01.getContents())&&!"".equals(c00.getContents())){
total++;
Object[] record = new Object[5];
record[0] = tn.getFid();
record[1] = c01.getContents();
record[2] = tn.getTeskId();
record[3] = tn.getCid();
record[4] = c00.getContents();
list.add(record);
}
if(i%1000==0){
con=(Connection) DataSourceUtils.getConnection(datasource);
System.out.println(con.hashCode()+"======="+list.size());
tnManager.test1(list,con);
list.clear();
System.out.println(con.isClosed());
}
}
System.out.println("============"+list.size());
con=(Connection) DataSourceUtils.getConnection(datasource);
tnManager.test1(list,con);
con.close();
tt.setCount(total);
md.addObject("total",total);
md.addObject("error",tf.getCount()-total);
} catch (Exception e) {
System.out.println("=============新增任务,导入号码文件错误!!!");
e.printStackTrace();
}
closeExcel(rwb);
===================
public void test1(List list,Connection con) throws Exception{
StructDescriptor recDesc = StructDescriptor.createDescriptor("TEST", con);
ArrayList<STRUCT> pstruct = new ArrayList<STRUCT>();
System.out.println(new Date());
for (int i = 0;i<list.size();i++) {
Object[] record = (Object[])list.get(i);
STRUCT item = new STRUCT(recDesc, con, record);
pstruct.add(item);
}
ArrayDescriptor tabDesc = ArrayDescriptor.createDescriptor("TEST_LIST", con);
ARRAY vArray = new ARRAY(tabDesc, con, pstruct.toArray());
System.out.println(new Date());
CallableStatement cstmt = null;
cstmt = (CallableStatement) con.prepareCall("{call inserttenumber(?)}");
System.out.println(new Date());
cstmt.setArray(1, vArray);
System.out.println(new Date());
cstmt.execute();
System.out.println(new Date());
con.commit();
cstmt.close();
con.close();
System.out.println(new Date()+"==========执行完成"+con.isClosed());
}
- java中调用存储过程并传递list集合参数的方法
- Java 调用存储过程中传递集合类型处理方法
- c#调用存储过程时 SqlParameter 中传递参数时ref参数的设置方法
- JAVA调用存储过程--传入集合参数
- Java调用Oracle集合类型输出参数的存储过程
- Java调用Oracle集合类型输出参数的存储过程
- Oracle存储过程传入类似java中list、数组类型的参数并使用
- Java调用Oracle存储过程传入数组参数的方法
- Spring MVC 作业过程中传递参数为集合List的解决方案
- Java中调用参数是数组的存储过程
- java调用存储过程 中DATE参数的处理
- 在Java中调用带参数的存储过程
- 在Java中调用带参数的存储过程
- 关于Java中方法调用时参数的传递
- 关于Java中方法调用时参数的传递
- 关于Java中方法调用时参数的传递
- 关于Java中方法调用时参数的传递
- java 反射调用有参方法,并传递参数
- MSI和MSI-X中断机制
- SQLServer判断表存在
- 半夜做的白日梦
- jsp_自定义标签_显示分页标签
- matlab 中diag函数的用法
- java中调用存储过程并传递list集合参数的方法
- 软件测试-集成测试方法
- TLD取经之路(2)-- 初窥门径:运行DEMO
- 使用matlab中的SVD技术进行特征缩减
- Ajax传值及传值的类型
- Windows开发应用(1)如何创建应用程序项目
- Ubuntu Linux下的QQ使用方案
- TLD取经之路(3)-- 始于足下
- gcc之-imacros选项