如何将表类型作为参数从java传递到oracle存储过程中
我想从java代码中调用Oracle中的存储过程(call_bobo_api)。我遇到的问题是,存储过程将用户定义的表作为参数。此参数为输入输出。见下文 该程序的标题为:如何将表类型作为参数从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参数是用户定义的参数。它的类
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让我走上正轨