JDBC OUT参数作为数组

时间:2016-04-25 16:29:08

标签: java oracle

我有以下签名的存储过程,我想将其注册为out参数但是给了我这个错误:

错误:

java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'car_details_ins'
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'car_details_ins'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

SPROC:

PROCEDURE car_details_ins
   (
      car_details IN car_details_tab_type
     ,id                   IN NUMBER
     ,user                      IN VARCHAR2
     ,app_id               OUT number_tab_type
     ,error_tab           OUT car_error_tab_type
   )

爪哇:

public void save(String DataSource,int Id,String username) 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();

    }

还有其他提供方式:

cs.registerOutParameter(4, java.sql.Types.ARRAY);
            cs.registerOutParameter(5, java.sql.Types.ARRAY);

添加更多详细信息。 的类型

CREATE OR REPLACE TYPE car_error_type force AS OBJECT
(
   model       NUMBER,
   v1 NUMBER,
   v2 NUMBER,
   error_text           VARCHAR2(1000)
)

0 个答案:

没有答案