En base a esta pregunta anterior sobre stackoverflow:¿Cómo especificar el parámetro IN que como tipo de datos Oracle de tipo TABLE?
Fetch Oracle table type from stored procedure using JDBC
La respuesta nos dio una muestra de parámetro OUT utilizando Oracle getArray y java.sql.Datum. Pero, ¿qué sucede si quiero especificar el parámetro IN que tiene el tipo de datos del tipo de Oracle TABLE?
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;
Y mi SP es la siguiente:
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
)
en tanto que la XX_PROD_ATTR_TAB_TYPE es una tabla como parámetro IN.
¿Cómo especificar esto en Java? Estoy usando Oracle 10g versión 2.
es pasar el conjunto de registros es igual a TABLA de registro? por favor elabora. –
Sí, cuando tiene un tipo definido como "my_type es tabla de X" entonces efectivamente es una matriz. Para pasar una tabla (o matriz) o registros, crea una matriz en Java y luego la convierte en el tipo interno de Oracle. –
¡Ah, tienes razón! ¡Gracias! –