JDBC-Aufruf einer gespeicherten Prozedur, die ein Array als Parameter @ annim
Ich versuche, die folgende Prozedur mit Java-Code aufzurufen, aber ich erhalte mehrere Fehler (hauptsächlich bei der Typkonvertierung). Ich habe irgendwo etwas durcheinander gebracht. Kann sich jemand das ansehen.
Dies ist das erste Mal, dass ich es tue.
ine kleine Hilfe wäre tol
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;
Java Code
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();
}
ERRO
java.sql.SQLException: Inkonsistente Java- und SQL-Objekttypen