private void bindValuesToBatchPS(Struct value) throws SQLException {
        String fieldName = null;
        String fieldSchemaName = null;
        int i = 0;
        for (Field field : value.schema().fields()) {
            i++;
            fieldName = field.name();
            fieldSchemaName = field.schema().name();

            //LOG.debug("Field name: {}, Schema type:{}, Schema Name:{}", fieldName, field.schema().type(), field.schema().name());

            switch (field.schema().type()) {
                case STRING:
                    if (fieldSchemaName != null && fieldSchemaName.equals("io.debezium.data.Xml")) {
                        SQLXML xml = this.getConnection().createSQLXML();
                        xml.setString(value.getString(fieldName));
                        batchPS.setSQLXML(i, xml);
                        xml.free();
                    } else {
                        batchPS.setString(i, value.getString(fieldName));
                    }
                    break;
                case INT8:
                    batchPS.setObject(i, value.getInt8(fieldName), Types.INTEGER);
                    break;
                case INT16:
                    batchPS.setObject(i, value.getInt16(fieldName), Types.INTEGER);
                    break;
                case INT32:
                    Integer int32Value = value.getInt32(fieldName);
                    if (int32Value == null) {
                        batchPS.setNull(i, Types.INTEGER);
                    } else if (fieldSchemaName != null) {
                        switch (fieldSchemaName) {
                            case "io.debezium.time.Date":
                                batchPS.setDate(i, Conversions.sqlDateOfEpochDay(int32Value));
                                break;
                            case "io.debezium.time.Time":
                                batchPS.setObject(i, Conversions.timeOfMilliOfDay(int32Value));
                                break;
                            default:
                                batchPS.setInt(i, int32Value);
                                break;
                        }
                    } else {
                        batchPS.setInt(i, value.getInt32(fieldName));
                    }
                    break;
                case INT64:
                    Long int64Value = value.getInt64(fieldName);
                    if (fieldSchemaName != null) {
                        if (int64Value == null) {
                            batchPS.setNull(i, Types.TIMESTAMP);
                        } else {
                            switch (fieldSchemaName) {
                                case "io.debezium.time.NanoTime":
                                    batchPS.setObject(i, Conversions.timeOfNanoOfDay(int64Value), Types.TIMESTAMP);
                                    break;
                                case "io.debezium.time.MicroTime":
                                    batchPS.setObject(i, Conversions.timeOfMicroOfDay(int64Value), Types.TIMESTAMP);
                                    break;
                                case "io.debezium.time.Timestamp":
                                    batchPS.setObject(i, Conversions.timestampOfEpochMilli(int64Value), Types.TIMESTAMP);
                                    break;
                                case "io.debezium.time.MicroTimestamp":
                                    batchPS.setObject(i, Conversions.timestampOfEpochMicro(int64Value), Types.TIMESTAMP);
                                    break;
                                case "io.debezium.time.NanoTimestamp":
                                    batchPS.setObject(i, Conversions.timestampOfEpochNano(int64Value), Types.TIMESTAMP);
                                    break;
                                default:
                                    batchPS.setObject(i, BigDecimal.valueOf(int64Value), Types.NUMERIC);
                            }
                        }
                    } else {
                        if (int64Value == null) {
                            batchPS.setNull(i, Types.NUMERIC);
                        } else {
                            batchPS.setObject(i, BigDecimal.valueOf(int64Value), Types.NUMERIC);
                        }
                    }
                    break;
                case FLOAT32:
                    batchPS.setObject(i, value.getFloat32(fieldName), Types.REAL);
                    break;
                case FLOAT64:
                    batchPS.setObject(i, value.getFloat64(fieldName), Types.DOUBLE);
                    break;
                case BOOLEAN:
                    batchPS.setObject(i, value.getBoolean(fieldName), Types.BIT);
                    break;
                case BYTES:
                    if (value.get(fieldName) instanceof BigDecimal)
                        batchPS.setBigDecimal(i, (BigDecimal) value.get(fieldName));
                    else {
                        //Blob blob = this.getConnection().createBlob();
                        //blob.setBytes(1,value.getBytes(fieldName));
                        //batchPS.setBlob(i,blob);
                        //blob.free();
                        batchPS.setBytes(i, value.getBytes(fieldName));
                    }
                    break;
                case ARRAY:
                    // Debe ser probado
                    /*final List<String> arrayList = value.getArray(fieldName);
                    final String[] data = arrayList.toArray(new String[arrayList.size()]);
                    batchPS.setArray(i, this.getConnection().createArrayOf("VARCHAR",data));*/
                    batchPS.setObject(i, value.getArray(fieldName), Types.ARRAY);
                    break;
                case MAP:
                    batchPS.setObject(i, value.getMap(fieldName));
                    break;
                case STRUCT:
                    batchPS.setObject(i, value.getStruct(fieldName), Types.STRUCT);
                    break;
                default:
                    batchPS.setObject(i, value.getString(fieldName), Types.VARCHAR);
                    break;
            }


        }
    }
Constructs the SqlManager.

@param opts   the ReplicaDB ToolOptions describing the user's requested action.
@param dsType
src/main/java/org/replicadb/manager/cdc/OracleManagerCDC.java