Как решить java.sql.SQLException: не удалось создать дескриптор: TYPECODE_VARCHAR2 Не удается разрешить ошибку типа? - PullRequest
0 голосов
/ 02 января 2019

Мы пытались вызвать хранимую процедуру оракула, которая бы принимала 8 параметров, а 8-й - это массив, который нам нужно передать.ниже приведен фрагмент кода, и он выдает ошибку.Я не уверен, что передать методу createDescriptor в качестве аргумента 1, потому что все, что я передаю, выдает ту же ошибку.Я взял значения из унаследованной части Fields, по следующей ссылке (любая помощь будет очень полезна) https://docs.oracle.com/cd/E16338_01/appdev.112/e13995/oracle/sql/ArrayDescriptor.html

java.sql.SQLException: не удалось создать дескриптор: невозможно разрешитьjava.sql.SQLException: не удалось создать дескриптор: TYPECODE_VARCHAR2

код:

structDescriptor = StructDescriptor.createDescriptor("TYPECODE_VARCHAR2", oracleConnection.getMetaData().getConnection()); 
        arrayDescriptor = ArrayDescriptor.createDescriptor("TYPECODE_VARCHAR2", oracleConnection.getMetaData().getConnection()); 
        ARRAY arr = new ARRAY(arrayDescriptor, oracleConnection.getMetaData().getConnection(), accountArray); 
        try { 
            //Array array = oracleConnection.createARRAY("OBJECT", new Object[] { "176354516912167301", "177254516082228201" });
            OracleCallableStatement cstmt = (OracleCallableStatement) oracleConnection.prepareCall("{call COPY_FUNCTIONALITY.COPY_ADDRESS(?,?,?,?,?,?,?,?)}");

            cstmt.setString(1, "ABCD");
            cstmt.setString(2, "PASZKAL");
            cstmt.setString(3, "624954458340565301");
            cstmt.setString(4, "ALL");
            cstmt.setString(5, "RECURRING_ENTERED");
            cstmt.setBoolean(6, false);
            cstmt.setBoolean(7, false);
            cstmt.setArray(8, arr);
            //cstmt.setArray(8, array_to_pass);

            ResultSet rs = cstmt.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
...