Java 如何在参数中指定为表类型的Oracle数据类型?
基于上一个关于stackoverflow的问题: 答案为我们提供了一个使用Oracle getArray和java.sql.Datum的OUT参数示例。但如果我想在参数中指定数据类型为Oracle表类型,该怎么办Java 如何在参数中指定为表类型的Oracle数据类型?,java,oracle,oracle10g,Java,Oracle,Oracle10g,基于上一个关于stackoverflow的问题: 答案为我们提供了一个使用Oracle getArray和java.sql.Datum的OUT参数示例。但如果我想在参数中指定数据类型为Oracle表类型,该怎么办 CREATE OR REPLACE TYPE XXINV.XX_PROD_SRCH_RSLT_REC_TYPE IS OBJECT( item_no VARCHAR2(30), inventory_item_id NUMBER
CREATE OR REPLACE TYPE XXINV.XX_PROD_SRCH_RSLT_REC_TYPE IS OBJECT(
item_no VARCHAR2(30),
inventory_item_id NUMBER,
organization_id NUMBER,
item_description VARCHAR2(240),
item_long_description VARCHAR2(240),
cat_description VARCHAR2(240),
category_set_name VARCHAR2(240),
nla_flag VARCHAR2(1),
CONSTRUCTOR FUNCTION XX_PROD_SRCH_RSLT_REC_TYPE RETURN SELF AS RESULT ,
MEMBER PROCEDURE log_prod_srch_rslt_rec_values (SELF IN XX_PROD_SRCH_RSLT_REC_TYPE) )
CREATE OR REPLACE TYPE xxinv.XX_PROD_SRCH_RSLT_TAB_TYPE AS TABLE OF XX_PROD_SRCH_RSLT_REC_TYPE;
我的SP是:
XX_PART_RESEARCH_PKG .GET_PARTS
(p_called_from IN VARCHAR2,
p_item_id IN NUMBER,
p_category_id IN NUMBER,
p_mnfg_part_id IN NUMBER,
p_item_desc IN VARCHAR2,
p_include_NLA_items IN VARCHAR2,
p_catl_group_id IN NUMBER,
p_catl_attributes IN XX_PROD_ATTR_TAB_TYPE,
x_srch_rslt IN XX_PROD_SRCH_RSLT_TAB_TYPE,
x_return_status OUT VARCHAR2,
x_returb_msg OUT VARCHAR2
)
其中,as XX_PROD_ATTR_TAB_类型是一个表as IN参数
如何在Java中指定这一点?我使用的是Oracle 10g release 2。由于您的类型定义了构造函数,我不确定这是否能正常工作,但我已在我的博客上发布了如何重新定义的示例。首先,如何将记录类型从Java传递到Oracle: 然后扩展它,将记录数组从Java传递到Oracle:
传递的记录数组是否等于记录表?请详细说明。是的,当您将一个类型定义为“my_type是X的表”时,它实际上是一个数组。要传入表(或数组)或记录,可以用Java构建一个数组,然后将其转换为Oracle内部类型。