java调用oracle存储过程传入参数为数组的处理
2011-03-03 18:53
771 查看
java调用参数为数组的存储过程,主要是能正确的把java的数组类型转化为oracle能识别的的数组类型,这一步网上的例子很多,也就不多说了。在最初做这个的时候发现,当传入数字数组的时候,数组里的值能正确的插入到数据库中,但是其他类型的数组却无法插入,程序也不报错,后来查了很久,乱搞一通,发现了问题所在,先写在这里,也算是个经验……
oracle程序:
先创建一个数组类型和一个测试表
create or replace varchar_array as table of varchar2(100)
create table test(
ID NUMBER(10),
NAME VARCHAR2(100)
)
存储过程:
create or replace procedure P_VARCHAR2(
i_varchar IN [b]varchar_array[/b]
)
is
begin
FOR i in 1..i_varchar.count loop
insert into test values (i,i_varchar(i));
end loop;
end;
java程序:
前面的获取连接什么的就不写了,主要写数据转换的
con = DBConnection.getConn();
// 创建一个数组描述符,[b]varchar_array 为你在数据库定义的数组类型的名字[/b]
ArrayDescriptor varchar2Desc = ArrayDescriptor.createDescriptor(
"varchar_array [b]", con);[/b]
String [] str={"1","2","3"};
// 将字符串数组转换为oralce能识别的数组
ARRAY vArray = new ARRAY(varchar2Desc, con, [b]str);[/b]
cstmt = con.prepareCall(P_VARCHAR2);
cstmt.setArray(1, vArray);
cstmt.execute();
这样写程序没什么问题,需要注意的是程序使用的jdbc jar包,jar包不合适的话数据就无法插入,这里我使用的是ojdbc14.jar(之前[b]ojdbc5.jar,[b]ojdbc6.jar都不行[b][b][b]),另外要注意的是项目必须导入另一个包nls_charset12.jar,主要是oracle对字符集的支持。ojdbc14+[b][b][b][b][b][b] nls_charset12就没什么问题了。[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
个人意见,暂且留在这里做个参考。
oracle程序:
先创建一个数组类型和一个测试表
create or replace varchar_array as table of varchar2(100)
create table test(
ID NUMBER(10),
NAME VARCHAR2(100)
)
存储过程:
create or replace procedure P_VARCHAR2(
i_varchar IN [b]varchar_array[/b]
)
is
begin
FOR i in 1..i_varchar.count loop
insert into test values (i,i_varchar(i));
end loop;
end;
java程序:
前面的获取连接什么的就不写了,主要写数据转换的
con = DBConnection.getConn();
// 创建一个数组描述符,[b]varchar_array 为你在数据库定义的数组类型的名字[/b]
ArrayDescriptor varchar2Desc = ArrayDescriptor.createDescriptor(
"varchar_array [b]", con);[/b]
String [] str={"1","2","3"};
// 将字符串数组转换为oralce能识别的数组
ARRAY vArray = new ARRAY(varchar2Desc, con, [b]str);[/b]
cstmt = con.prepareCall(P_VARCHAR2);
cstmt.setArray(1, vArray);
cstmt.execute();
这样写程序没什么问题,需要注意的是程序使用的jdbc jar包,jar包不合适的话数据就无法插入,这里我使用的是ojdbc14.jar(之前[b]ojdbc5.jar,[b]ojdbc6.jar都不行[b][b][b]),另外要注意的是项目必须导入另一个包nls_charset12.jar,主要是oracle对字符集的支持。ojdbc14+[b][b][b][b][b][b] nls_charset12就没什么问题了。[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
个人意见,暂且留在这里做个参考。
相关文章推荐
- java 调用oracle存储过程传入 数组参数 不用纯jdbc连接
- Oracle存储过程传入类似java中list、数组类型的参数并使用
- JAVA调用Oracle存储过程传入结构化参数
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- 数据库技术_Orcale技术(0002)_5分钟会用存储过程_存储过程简单实例(包含循环、条件、增改查、参数传入、变量赋值、java调用等)
- Java调用Oracle、mysql带out参数的存储过程
- java ibatis调动oracle传入clob参数的存储过程
- java调用参数为数组的存储过程
- Java中调用参数是数组的存储过程
- Java调用Oracle集合类型输出参数的存储过程
- Java调用Oracle集合类型输出参数的存储过程
- Java调用Oracle集合类型输出参数的存储过程
- java调用存储过程 中DATE参数的处理
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
- oracle 向存储过程传入数组类型参数
- C#调用Oracle的存储过程,其参数为数组类型”中的­Package
- JAVA调用存储过程--传入集合参数
- C#调用Oracle的存储过程,其参数为数组类型
- C#调用Oracle的存储过程,其参数为数组类型
- j2ee调用Oracle带数组参数和游标的存储过程方法