Plsql 将具有IN参数的过程作为记录插入到多个表中

Plsql 将具有IN参数的过程作为记录插入到多个表中,plsql,oracle11g,plsqldeveloper,Plsql,Oracle11g,Plsqldeveloper,我需要将数据插入到表中,我的过程将通过JAVA调用 所以JAVA人员问我是否可以将JAVA对象(即PLSQL中的记录)作为输入,然后将其插入表中 这些是表格的DDL create table gnv_sol_attributes ( so_id varchar2(20), se_integration_id varchar2(20), parameter_name varchar2(100), actio

我需要将数据插入到表中,我的过程将通过JAVA调用

所以JAVA人员问我是否可以将JAVA对象(即PLSQL中的记录)作为输入,然后将其插入表中

这些是表格的DDL

create table gnv_sol_attributes (

so_id    varchar2(20),           

se_integration_id    varchar2(20),           

parameter_name    varchar2(100),           

action_code    varchar2(20),           

parameter_value    varchar2(255)

);



 create table

gnv_sol_serviceelement (

customer_ref    varchar2(20),           

billing_account_code    varchar2(20),           

so_id    varchar2(20),           

so_type    varchar2(5),           

se_integration_id    varchar2(20),           

se_root_integration_id    varchar2(20),           

se_parent_integration_id    varchar2(20),       

offer_id    varchar2(75),       

offer_id_old    varchar2(75),       

pricing_id    varchar2(75),       

promo_id    varchar2(20),       

action_code    varchar2(20),           

reason_id    varchar2(100),       

product_code    varchar2(40),           

product_subsc_date    date,       

product_start_date    date,           

product_modify_date    date,       

product_end_date    date,       

event_source    varchar2(40),       

sales_force_code    varchar2(20),       

line_number    varchar2(20),       

product_status    varchar2(2)

);
因此,在gnv_sol_属性表中,对于单个So_id和se_integration_id,有不同的参数_名称

在这里,他们向我解释说,我们可以在一个记录中插入另一个记录,然后插入它(看起来像多维集合)

gnv_sol_serviceelemen表的示例数据

CUSTOMER_REF,BILLING_ACCOUNT_CODE,SO_ID,SO_TYPE,SE_INTEGRATION_ID,SE_ROOT_INTEGRATION_ID,SE_PARENT_INTEGRATION_ID,OFFER_ID,OFFER_ID_OLD,PRICING_ID,PROMO_ID,ACTION_CODE,REASON_ID,PRODUCT_CODE,PRODUCT_SUBSC_DATE,PRODUCT_START_DATE,PRODUCT_MODIFY_DATE,PRODUCT_END_DATE,EVENT_SOURCE,SALES_FORCE_CODE,LINE_NUMBER,PRODUCT_STATUS

C_1,BA_1,SO_1,OT_1,SE_1,SE_1,SE_1,STDE_A8,,STDE_A8_FEE_AE,,Add,,STDE_A8,7/13/2015,7/13/2015,,,,,1,

C_1,BA_1,SO_1,OT_1,SE_2,SE_1,SE_1,STDE_A8,,STDE_MA,,Add,,STDE_MA,7/14/2015,7/14/2015,,,,,2,

C_1,BA_1,SO_1,OT_1,SE_3,SE_1,SE_1,STDE_A8,,STDE_WIFI,,Add,,STDE_WIFI,7/15/2015,7/15/2015,,,,,3,

C_1,BA_1,SO_1,OT_1,SE_4,SE_1,SE_1,STDE_A8,,STDE_BCK_M_FEE_AE,,Add,,STDE_BCK_M,7/16/2015,7/16/2015,,,,,4,

C_1,BA_1,SO_1,OT_1,SE_5,SE_1,SE_1,STDE_A8,,SBRI_1_FEE_AE,,Add,,SBRI_1,7/17/2015,7/17/2015,,,,,5,

C_1,BA_1,SO_1,OT_1,SE_6,SE_1,SE_1,STDE_A8,,SBRI_6_FEE_AE,,Add,,SBRI_4,7/18/2015,7/18/2015,,,,,6,

C_1,BA_1,SO_1,OT_1,SE_7,SE_1,SE_1,STDE_A8,,SPUN_6_FEE_AE,,Add,,SPUN_6,7/19/2015,7/19/2015,,,,,7,

C_1,BA_1,SO_1,OT_1,SE_8,SE_1,SE_7,STDE_A8,,SPUN_AV_6,,Add,,SPUN_AV_6,7/20/2015,7/20/2015,,,,,8,

C_1,BA_1,SO_1,OT_1,SE_9,SE_1,SE_7,STDE_A8,,SPUN_AF_6,,Add,,SPUN_AF_6,7/21/2015,7/21/2015,,,,,9,

C_1,BA_1,SO_1,OT_1,SE_10,SE_1,SE_7,STDE_A8,,SPUN_ARS_6,,Add,,SPUN_ARS_6,7/22/2015,7/22/2015,,,,,10,

C_1,BA_1,SO_1,OT_1,SE_11,SE_1,SE_1,STDE_A8,,SCOE_VOIP_CEIP_3_FEE_AE,,Add,,SCOE_VOIP_CEIP_3,7/23/2015,7/23/2015,,,,,11,
gnv_sol_属性的示例数据

SO_ID,SE_INTEGRATION_ID,PARAMETER_NAME,ACTION_CODE,PARAMETER_VALUE,

1,SO_1,SE_1,PCT? (Without),Add,?,

2,SO_1,SE_1,FEE PCT,Add,110,

3,SO_1,SE_1,AE PCT,Add,212,

4,SO_1,SE_1,AE+FEE PCT,Add,218,

5,SO_1,SE_1,FEE BOO,Add,YES,

6,SO_1,SE_1,AE BOO,Add,YES,

7,SO_1,SE_1,AE+FEE BOO,Add,YES,

8,SO_1,SE_1,hierarchy ID,Add,,

9,SO_1,SE_1,hierarchy subscription ID,Add,,

10,SO_1,SE_1,hierarchy parent ID,Add,,

11,SO_1,SE_1,subscription date,Add,7/31/2015,

12,SO_1,SE_1,start of charging date,Add,7/31/2015,

13,SO_1,SE_1,start of billing date,Add,7/31/2015,

14,SO_1,SE_1,PAS(Address),Add,,

15,SO_1,SE_1,Download Bandwidth,Add,20480,

16,SO_1,SE_1,upload bandwidth,Add,1024,
我创建了这个过程,它成功地在两个表中插入了一行

create or replace procedure ins_svc (p_svc IN SVC_REC,            p_svc_att IN SVC_ATTR_REC)

is



begin



insert into gnv_sol_serviceelement values (p_svc.customer_ref,    p_svc.billing_account_code, p_svc.so_id, p_svc.so_type

                                       ,p_svc.se_integration_id, p_svc.se_root_integration_id, p_svc.se_parent_integration_id

                                       ,p_svc.offer_id, p_svc.offer_id_old, p_svc.pricing_id, p_svc.promo_id, p_svc.action_code

                                       ,p_svc.reason_id, p_svc.product_code, p_svc.product_subsc_date, p_svc.product_start_date

                                       ,p_svc.product_modify_date, p_svc.product_end_date, p_svc.event_source

                                       ,p_svc.sales_force_code, p_svc.line_number, p_svc.product_status);



insert into GNV_SOL_ATTRIBUTES values (p_svc_att.so_id, p_svc_att.se_integration_id, p_svc_att.parameter_name

                                   ,p_svc_att.action_code, p_svc_att.parameter_value);



exception

 when others then

 dbms_output.put_line('error code '||' '||sqlcode||' '||'Error reason'||sqlerrm);

end;
现在,JAVA人员问我是否有办法在gnv_sol_servicelemen表中插入一行

CUSTOMER_REF,BILLING_ACCOUNT_CODE,SO_ID,SO_TYPE,SE_INTEGRATION_ID,SE_ROOT_INTEGRATION_ID,SE_PARENT_INTEGRATION_ID,OFFER_ID,OFFER_ID_OLD,PRICING_ID,PROMO_ID,ACTION_CODE,REASON_ID,PRODUCT_CODE,PRODUCT_SUBSC_DATE,PRODUCT_START_DATE,PRODUCT_MODIFY_DATE,PRODUCT_END_DATE,EVENT_SOURCE,SALES_FORCE_CODE,LINE_NUMBER,PRODUCT_STATUS

C_1,BA_1,SO_1,OT_1,SE_1,SE_1,SE_1,STDE_A8,,STDE_A8_FEE_AE,,Add,,STDE_A8,7/13/2015,7/13/2015,,,,,1,

C_1,BA_1,SO_1,OT_1,SE_2,SE_1,SE_1,STDE_A8,,STDE_MA,,Add,,STDE_MA,7/14/2015,7/14/2015,,,,,2,

C_1,BA_1,SO_1,OT_1,SE_3,SE_1,SE_1,STDE_A8,,STDE_WIFI,,Add,,STDE_WIFI,7/15/2015,7/15/2015,,,,,3,

C_1,BA_1,SO_1,OT_1,SE_4,SE_1,SE_1,STDE_A8,,STDE_BCK_M_FEE_AE,,Add,,STDE_BCK_M,7/16/2015,7/16/2015,,,,,4,

C_1,BA_1,SO_1,OT_1,SE_5,SE_1,SE_1,STDE_A8,,SBRI_1_FEE_AE,,Add,,SBRI_1,7/17/2015,7/17/2015,,,,,5,

C_1,BA_1,SO_1,OT_1,SE_6,SE_1,SE_1,STDE_A8,,SBRI_6_FEE_AE,,Add,,SBRI_4,7/18/2015,7/18/2015,,,,,6,

C_1,BA_1,SO_1,OT_1,SE_7,SE_1,SE_1,STDE_A8,,SPUN_6_FEE_AE,,Add,,SPUN_6,7/19/2015,7/19/2015,,,,,7,

C_1,BA_1,SO_1,OT_1,SE_8,SE_1,SE_7,STDE_A8,,SPUN_AV_6,,Add,,SPUN_AV_6,7/20/2015,7/20/2015,,,,,8,

C_1,BA_1,SO_1,OT_1,SE_9,SE_1,SE_7,STDE_A8,,SPUN_AF_6,,Add,,SPUN_AF_6,7/21/2015,7/21/2015,,,,,9,

C_1,BA_1,SO_1,OT_1,SE_10,SE_1,SE_7,STDE_A8,,SPUN_ARS_6,,Add,,SPUN_ARS_6,7/22/2015,7/22/2015,,,,,10,

C_1,BA_1,SO_1,OT_1,SE_11,SE_1,SE_1,STDE_A8,,SCOE_VOIP_CEIP_3_FEE_AE,,Add,,SCOE_VOIP_CEIP_3,7/23/2015,7/23/2015,,,,,11,
和gnv_sol_属性中的多行,因为在属性表中,同一so_id和SE_INTEGRATION_id的参数值不同

这就是我被卡住的地方

如果有人有出路

数据库版本:--


Oracle Database 11g Enterprise Edition 11.2.0.3.0版-64位生产版

欢迎使用SO。请阅读。这里没有人会涉过代码/数据的页面。回答得很好!预计来自stackoverflow