现在有2张表,一张叫tb_a(主表),一张叫tb_b(从表) 。
建表sql如下
create table TB_A
(
ID NUMBER,
NAME VARCHAR2(200),
EMAIL VARCHAR2(200)
)
create table TB_B
(
A_ID NUMBER,
PHONEA VARCHAR2(200),
PHONEB VARCHAR2(200)
)
现在有一个包是这样的:
head:
create or replace package pck_createdata is
--从表 tb_B
TYPE B_REC IS RECORD(
B_id tb_b.a_id%type,
B_phoneA tb_b.phonea%type,
B_phoneB tb_b.phoneb%type);
TYPE B_TBL IS TABLE OF B_REC INDEX BY BINARY_INTEGER;
--主表 tb_A
TYPE A_REC IS RECORD(
a_id tb_a.id%type,
a_name tb_a.name%type,
a_email tb_a.email%type,
b_info b_tbl);
TYPE A_TBL IS TABLE OF A_REC INDEX BY BINARY_INTEGER;
procedure createData(A_inof a_tbl);
end pck_createdata;
BODY:
create or replace package body pck_createdata is
procedure createData(A_inof a_tbl) as
begin
FOR I IN A_inof.FIRST .. A_inof.LAST LOOP
--向主表插入数据
insert into tb_a
(id, name, email)
values
(A_inof(I).a_id, A_inof(I).a_name, A_inof(I).a_email);
--向从表插入数据
FOR J IN A_inof(I).b_info.FIRST .. A_inof(I).b_info.LAST LOOP
insert into tb_b
(a_id, phonea, phoneb)
values
(A_inof(I).b_info(J).B_id,
A_inof(I).b_info(J).B_phoneA,
A_inof(I).b_info(J).B_phoneB);
end loop;
end loop;
end;
end pck_createdata;
这个package的功能就是往数据库里面插入数据。
我想问的是在java中怎么去向这个package传递 TYPE A_TBL IS TABLE OF A_REC INDEX BY BINARY_INTEGER; 这样的参数。
不知道怎么传参数。
建表sql如下
create table TB_A
(
ID NUMBER,
NAME VARCHAR2(200),
EMAIL VARCHAR2(200)
)
create table TB_B
(
A_ID NUMBER,
PHONEA VARCHAR2(200),
PHONEB VARCHAR2(200)
)
现在有一个包是这样的:
head:
create or replace package pck_createdata is
--从表 tb_B
TYPE B_REC IS RECORD(
B_id tb_b.a_id%type,
B_phoneA tb_b.phonea%type,
B_phoneB tb_b.phoneb%type);
TYPE B_TBL IS TABLE OF B_REC INDEX BY BINARY_INTEGER;
--主表 tb_A
TYPE A_REC IS RECORD(
a_id tb_a.id%type,
a_name tb_a.name%type,
a_email tb_a.email%type,
b_info b_tbl);
TYPE A_TBL IS TABLE OF A_REC INDEX BY BINARY_INTEGER;
procedure createData(A_inof a_tbl);
end pck_createdata;
BODY:
create or replace package body pck_createdata is
procedure createData(A_inof a_tbl) as
begin
FOR I IN A_inof.FIRST .. A_inof.LAST LOOP
--向主表插入数据
insert into tb_a
(id, name, email)
values
(A_inof(I).a_id, A_inof(I).a_name, A_inof(I).a_email);
--向从表插入数据
FOR J IN A_inof(I).b_info.FIRST .. A_inof(I).b_info.LAST LOOP
insert into tb_b
(a_id, phonea, phoneb)
values
(A_inof(I).b_info(J).B_id,
A_inof(I).b_info(J).B_phoneA,
A_inof(I).b_info(J).B_phoneB);
end loop;
end loop;
end;
end pck_createdata;
这个package的功能就是往数据库里面插入数据。
我想问的是在java中怎么去向这个package传递 TYPE A_TBL IS TABLE OF A_REC INDEX BY BINARY_INTEGER; 这样的参数。
不知道怎么传参数。
解决方案 »
- 如何查询oracle中所有的schema名以及各个schema下的所有表名
- 向oralce 的long 或clob类型的字段中插入数据时。报ORA-01704: string literal too long
- SQL LOADER可以对视图插入数据吗?
- (在线急等)怎么才能登录时不加as sysdba?
- oracle 错误码2134
- 我是个初学者,请各位高手帮助以下,我进入SQL*Plus时连接数据库怎么一直是连接失败?
- 在写动态SQL时,DBMS_SQL.COLUMN_VALUET和DBMS_SQL.VARIALBE_VALUE有什么区别和联系?
- 物化视图的具体应用方案
- [求助]请大神帮忙看下dbms_metadata输出的ddl问题
- kettle怎么链接数据库 求步骤 新手不懂 详细点
- 在线紧急求助---oracle9i数据库不能启动
- 数据太多了怎么删?
看下我的不咯嘎,你就知道了:
这是sql,跟你的一点点不同,没有package,用的是object不是record,record一样可以用java这么弄
http://blog.csdn.net/crazylaa/archive/2009/11/28/4897354.aspx
这是java调用,记得展开下面的代码,最下面倒数第2段里面有个insert方法,看看就明白了。
http://blog.csdn.net/crazylaa/archive/2009/11/28/4897361.aspx