PPAS上以自定义类型数组为入参的函数及调用加java调用
来源:互联网 发布:codol账号数据异常 编辑:程序博客网 时间:2024/04/28 08:15
--1
--创建表
CREATE TABLE TABLE_TEST
(
ID NUMBER(10,0) NOT NULL,
NAME VARCHAR2 NOT NULL,
ATTRIBUTE1 VARCHAR2,
ATTRIBUTE2 VARCHAR2,
CONSTRAINT PK_TABLE_TEST PRIMARY KEY (ID)
);
--2. 创建序列 s_TABLE_TEST.
create sequence s_TABLE_TEST start 1;
--3
--创建类型
create or replace type T_TYPE is object (
NAME VARCHAR2(100),
ATTRIBUTE1 VARCHAR2(100),
ATTRIBUTE2 VARCHAR2(100)
);
--4
--因为不支持组合类型做为出、入参数,改为如下:
create or replace procedure POPULATE_TABLE_TEST (example T_TYPE[]) as
type t_tb_seq is table of number;
l_t_seq t_tb_seq := t_tb_seq();
begin
for i in array_lower(example,1) .. array_upper(example,1) loop
l_t_seq.extend;
select s_TABLE_TEST.nextval into l_t_seq(i) from dual;
end loop;
for i in array_lower(example,1) .. array_upper(example,1) loop
insert into TABLE_TEST(id,name,attribute1,attribute2)
values (
l_t_seq(i),
example[i].NAME,
example[i].ATTRIBUTE1,
example[i].ATTRIBUTE2
);
end loop;
end;
--5
--因为不支持结构,创建T_TYPE类并覆盖其toString()方法
class T_Type {
private String name, attribute1, attribute2;
T_Type(String name, String attribute1, String attribute2) {
this.name = name;
this.attribute1 = attribute1;
this.attribute2 = attribute2;
}
@Override
public String toString() {
return "(\"" + name +"\","
+ " \"" + attribute1 + "\","
+ " \"" + attribute2 + "\")";
}
}
--6
--调用存储过程
T_Type[] values = new T_Type[]{new T_Type("obj1_name","obj1_att1", "obj1_att2"),
new T_Type("obj2_name","obj2_att1", "obj2_att2"),
new T_Type("obj3_name","obj3_att1", "obj3_att2")};
CallableStatement cstmt = con.prepareCall("{call POPULATE_TABLE_TEST(?)}");
Array array = con.createArrayOf("t_type", values);
cstmt.setArray(1, array);
cstmt.execute();
--注意
--为了使用方法con.createArrayOf,应该使用JDK1.6+和edb-jdbc16.jar,因为createArrayOf是JDBC4的功能。
--创建表
CREATE TABLE TABLE_TEST
(
ID NUMBER(10,0) NOT NULL,
NAME VARCHAR2 NOT NULL,
ATTRIBUTE1 VARCHAR2,
ATTRIBUTE2 VARCHAR2,
CONSTRAINT PK_TABLE_TEST PRIMARY KEY (ID)
);
--2. 创建序列 s_TABLE_TEST.
create sequence s_TABLE_TEST start 1;
--3
--创建类型
create or replace type T_TYPE is object (
NAME VARCHAR2(100),
ATTRIBUTE1 VARCHAR2(100),
ATTRIBUTE2 VARCHAR2(100)
);
--4
--因为不支持组合类型做为出、入参数,改为如下:
create or replace procedure POPULATE_TABLE_TEST (example T_TYPE[]) as
type t_tb_seq is table of number;
l_t_seq t_tb_seq := t_tb_seq();
begin
for i in array_lower(example,1) .. array_upper(example,1) loop
l_t_seq.extend;
select s_TABLE_TEST.nextval into l_t_seq(i) from dual;
end loop;
for i in array_lower(example,1) .. array_upper(example,1) loop
insert into TABLE_TEST(id,name,attribute1,attribute2)
values (
l_t_seq(i),
example[i].NAME,
example[i].ATTRIBUTE1,
example[i].ATTRIBUTE2
);
end loop;
end;
--5
--因为不支持结构,创建T_TYPE类并覆盖其toString()方法
class T_Type {
private String name, attribute1, attribute2;
T_Type(String name, String attribute1, String attribute2) {
this.name = name;
this.attribute1 = attribute1;
this.attribute2 = attribute2;
}
@Override
public String toString() {
return "(\"" + name +"\","
+ " \"" + attribute1 + "\","
+ " \"" + attribute2 + "\")";
}
}
--6
--调用存储过程
T_Type[] values = new T_Type[]{new T_Type("obj1_name","obj1_att1", "obj1_att2"),
new T_Type("obj2_name","obj2_att1", "obj2_att2"),
new T_Type("obj3_name","obj3_att1", "obj3_att2")};
CallableStatement cstmt = con.prepareCall("{call POPULATE_TABLE_TEST(?)}");
Array array = con.createArrayOf("t_type", values);
cstmt.setArray(1, array);
cstmt.execute();
--注意
--为了使用方法con.createArrayOf,应该使用JDK1.6+和edb-jdbc16.jar,因为createArrayOf是JDBC4的功能。
- PPAS上以自定义类型数组为入参的函数及调用加java调用
- PPAS上以自定义类型数组为入参的函数及调用
- java调用oracle存储过程的自定义类型(可变数组)。
- java调用oracle存储过程的自定义类型(可变数组)。
- 以TDes8&类型变量为参数的函数调用问题
- view 中函数的调用顺序,以xib自定义view为例
- 调用形参为数组的函数的程序
- 数组、二维数组、及类型,存储过程调用.相关java
- 递归函数的调用过程,以汉诺塔为例
- shell调用自定义函数及传参
- java调用oracle存储过程的自定义类型(可变数组).txt
- DWR调用入参为Map的方法
- java调用oracle中输入参数是数组类型的函数或者存储过程
- 函数调用的入栈顺序
- Java 调用 自定义函数SQL
- 函数调用不可以作为一个函数的形参
- xFire实现Java间自定义类型的WebService调用(一)
- xFire实现Java间自定义类型的WebService调用(二)
- Log4j使用总结(log4j.properties文件说明)
- 搭建开发rails环境
- IOS 各种教程 经典
- SQL Server 2005 Express 数据库导入到 oracle 10g的方法
- WMS_LICENSE_PLATE_NUMBERS.LPN_CONTEXT
- PPAS上以自定义类型数组为入参的函数及调用加java调用
- Fiddler 使用教程
- C#.NET 各种连接字符串
- 莫言诺贝尔授奖词
- Android Push 开源方案解析
- CoolFormat源代码格式化工具
- HttpSession和jsp中session的区别
- GridView空数据行显示和选择整行
- Unsatisfied dependency expressed through bean property 'dataSource'