Llamada JDBC al procedimiento almacenado que toma la matriz como parámetro
Estoy tratando de llamar al siguiente procedimiento usando el código de Java, pero recibo varios errores (básicamente para la conversión de tipos). Lo que he estropeado en algún lugar puede alguien echarle un vistazo.
Esta es la primera vez que lo hago.
Un poco de ayuda sería genial.
proc:
DECLARE
car__details_tab car__details_tab_type := NEW car__details_tab_type();
car_id number_tab_type;
car_error_tab car__error_tab_type := new car__error_tab_type();
car_purchase_id NUMBER;
BEGIN
car__details_tab.extend;
car__details_tab(car__details_tab.count) := car__details_type(null,
null
,null
,null
,null
);
car__details_tab(car__details_tab.COUNT).model_id := AW0;
car__details_tab(car__details_tab.COUNT).brand := 'LAM';
car__details_tab(car__details_tab.COUNT).version := 1;
car__details_tab(car__details_tab.COUNT).type := 'Sedan';
pckg.ins_trade_details(car__details_tab => car__details_tab
,car_purchase_id => 101
,user => 'Test'
,car_id_tab => car_id
,car_error_tab => car_error_tab);
DBMS_OUTPUT.PUT_LINE(car_purchase_id);
IF car_error_tab.EXISTS(1)
THEN
FOR i IN 1 .. car_error_tab.COUNT
LOOP
dbms_output.put_line(car_error_tab(i).model_id);
dbms_output.put_line(car_error_tab(i).version);
dbms_output.put_line(car_error_tab(i).version);
dbms_output.put_line(car_error_tab(i).error_text);
END LOOP;
END IF;
Código Java
public void save(String DataSource,int Id,String username,String[] car__details_tab_type) throws SQLException{
Connection con = getConnection(DataSource);
CallableStatement cs= con.prepareCall({call pckg.save_details(?,?,?,?,?)});
Object[] project1 = new Object[]{AWO,"LAM,1,"SEDAN"};
Object[] project2 = new Object[]{AWO,"LAM,1,"SEDAN"};
StructDescriptor projectTypeDesc = StructDescriptor.createDescriptor("CAR__DETAILS_TAB_TYPE", con);
STRUCT structProject1 = new STRUCT(projectTypeDesc, con, project1);//THIS IS WHERE I GET THE ERROR
STRUCT structProject2 = new STRUCT(projectTypeDesc, con, project2);
STRUCT[] structArrayOfProjects = {structProject1,structProject2};
ArrayDescriptor projectTypeArrayDesc = ArrayDescriptor.createDescriptor("CAR__DETAILS_TAB_TYPE", con);
ARRAY arrayOfProjects = new ARRAY(projectTypeArrayDesc, con, structArrayOfProjects);
cs.setArray(1, details);
cs.setInt(2, Id);
cs.setString(3, username);
cs.registerOutParameter(4, java.sql.Types.ARRAY);
cs.registerOutParameter(5, java.sql.Types.ARRAY);
cs.execute();
}
ERROR
java.sql.SQLException: tipos inconsistentes de objetos java y sql