java oracle存储过程/函数(1):字符串数组、int数组传入存储过程

来源:互联网 发布:淘宝运营管理部职责 编辑:程序博客网 时间:2024/05/16 07:33

    最近CSDN上有比较多的朋友问到java与oracle存储过程/函数的交互方面的问题。本人也是一步步学起来的,在之前也碰到过类似的问题,经常一头雾水。但现在某些东西似乎是有点入门的味道了,觉得应该写点什么总结一下,方便大众,也是为了自己查找方便。就准备写一个系列。

    嗯,因为是原创,可能代码存在一些错误或者不足,还希望大家谅解并指出来。但可以负责任的说一句:本人的以下代码都是测试通过的,可以直接^C^V用。好了,废话不多说,直接来第一篇。

 

oracle的连接类

这个在后续的所有java代码中都会用到,本来不想写的,但懒得每个类中都这么getConnection一下,所以弄了这个。另外,类所在的package也就不改了,请要用的朋友相应的修改吧,后续的各篇也是如此,这里就不过多罗嗦了。

 

 

 

1varchar2、number数组.sql


--为了保证写出来的都是可以运行的,所以每次创建表、类型等等,都先drop一下。第一次运行的朋友,可能会发现drop语句报×××不存在,可以忽略。引号

 

drop table T_VarcharArray;
create table T_VarcharArray(
    id number(10),
    name varchar2(100)
    );

drop type T_VARCHAR;

--创建一个与T_VarcharArray的name同类型的不定长数组的引定义
create or replace type T_VARCHAR as table of varchar2(100);
/

drop type T_NUMBER;

--创建一个与T_VarcharArray的id同类型的不定长数组的定义
create or replace type T_NUMBER as table of number(10);
/

create or replace procedure P_VARCHAR2_LST(
    i_t_varchar IN t_varchar, --输入参数为定义的不定长varchar2数组
    o_n_ret OUT number --输出参数,正常结束,则输出0,否则抛出异常
    )
is
begin
    FOR i in 1..i_t_varchar.COUNT loop --注意下标从1开始。
        insert into T_VarcharArray values (i,i_t_varchar(i));
    end loop;
    o_n_ret :=0;
    exception when others then
    raise;
end;
/

create or replace function F_NUMBER_LST(
    i_t_number IN t_number --输入参数为定义的不定长数值数组
    )
return number --函数输出结果
is
begin
    FOR i in 1..i_t_number.COUNT loop --注意下标从1开始。
        insert into T_VarcharArray values (i_t_number(i),to_char(i));
    end loop;
    return 0;
    exception when others then
    raise;
end;
/


Varchar2NumberArray.java

 

 

 

第一篇貌似就这么结束了,这里讲的只是如何把String数组、int数组传入oracle并使用,下一节讲如何传出。

 

喜欢的朋友关注下,记得帮顶噢,合伙哈。

 

原创粉丝点击