如何将表类型作为参数从java传递到oracle存储过程中

如何将表类型作为参数从java传递到oracle存储过程中,java,oracle10g,Java,Oracle10g,我想从java代码中调用Oracle中的存储过程(call_bobo_api)。我遇到的问题是,存储过程将用户定义的表作为参数。此参数为输入输出。见下文 该程序的标题为: PROCEDURE call_bobo_api(pi_bobo_input_tab IN OUT bobo_input_tabtype, po_overtime OUT VARCHAR2) pi_bobo_input_tab参数是用户定义的参数。它的类

我想从java代码中调用Oracle中的存储过程(call_bobo_api)。我遇到的问题是,存储过程将用户定义的表作为参数。此参数为输入输出。见下文

该程序的标题为:

  PROCEDURE call_bobo_api(pi_bobo_input_tab IN OUT bobo_input_tabtype,
                          po_overtime       OUT    VARCHAR2)
pi_bobo_input_tab参数是用户定义的参数。它的类型是bobo_input_tabtype

TYPE bobo_input_rectype IS RECORD ( person_id      VARCHAR2(10),
                                  duty_date      DATE,
                                  old_book_on    NUMBER(6),
                                  book_on        NUMBER(6),
                                  old_book_off   NUMBER(6),
                                  book_off       NUMBER(6),
                                  bobo_type      VARCHAR2(1),
                                  duty_code      VARCHAR2(8),
                                  narrative      VARCHAR2(1000),
                                  working_type   VARCHAR2(10),
                                  authoriser     NUMBER,
                                  notice_date    DATE,
                                  forced_voluntry_fv  VARCHAR2(1),
                                  previous_day   VARCHAR2(1),   
                                  shift_length_only BOOLEAN,
                                  due_notice     VARCHAR2(1),
                                  by_others      VARCHAR2(1),
                                  split_ind      VARCHAR2(1),
                                  recall_ind     VARCHAR2(1),                                      
                                  bobo_main_id   NUMBER(20),
                                  bobo_detail_id NUMBER(20),
                                  trans_type     VARCHAR2(1),
                                  planned_duty   VARCHAR2(10),
                                  user_name      VARCHAR2(30), 
                                  auto_created   VARCHAR2(1),
                                  user_defined   VARCHAR2(4),
                                  extended_exc_start NUMBER(6),
                                  extended_exc_end   NUMBER(6)
存储过程调用已在PLSQL代码中使用。我需要能够在java中重用API调用(call_bobo_API)。我的问题是我不知道如何在java中创建PLSQL表以便调用API

任何能让我走上正轨的人都非常感激

多谢各位

编辑

我得到的“无效名称模式:DMS_DBA.BOBO_INPUT_RECTYPE”错误是由以下代码引起的

recDescriptor = StructDescriptor.createDescriptor("DMS_DBA.BOBO_INPUT_RECTYPE",pconn.getConnection());
…而plsql方面是

TYPE bobo_input_tabtype IS TABLE OF bobo_input_rectype INDEX by BINARY_INTEGER;
模式名为DMS_DBA,包名为DBPK_TM_BOBO_WRAPPER_API。我想知道
StructDescriptor.createDescriptor()方法调用中第一个参数的值应该是什么


谢谢你的帮助。这确实帮助了我,使我走上了正确的道路。目前,我遇到了以下错误:“无效的名称模式:DMS_DBA.BOBO_INPUT_RECTYPE”我通过将BOBO_INPUT_RECTYPE更改为PLSQL中的一个对象解决了这个问题。这必须在模式级别完成,新对象将被创建到sqldeveloper的Types文件夹中。然后在Java代码中创建StructDescriptor时,第一个参数是Oracle对象的路径(大写)。在我的例子“DMS_DBA.BOBO_INPUT_RECTYPE”中,我要做的另一件事是在BOBO_INPUT_RECTYPE对象上向oracle用户提供执行授权。感谢@rgetman让我走上正轨