J'ai trouvé un travail autour de Oracle Type et Struct. Voici un résumé de la solution. ÉTAPE 1: Créez un type comme ci-dessous - ceci doit être fait au niveau de la base de données en utilisant SQL Developer ou SQL Plus. Pas dans le package
créer ou remplacer TYPE TYPE_DTAP_RECORD_STORE AS OBJECT (DATA_STORE_ID VARCHAR2 (300), INDEX_RECORD CLOB);
ÉTAPE 2: Dans l'ensemble définissent un tableau du type ci-dessus RECORD_ARRAY TYPE EST TABLEAU DES INDEX TYPE_DTAP_RECORD_STORE PAR BINARY_INTEGER
ÉTAPE 3: Créer la procédure stockée comme ci-dessous procédure baseline_record_insert_bulk (i_record dans record_array);
ÉTAPE 4:
En Java, écrire une méthode DAO comme ci-dessous pour appeler la procédure stockée
public void bulkAddToRecordStore(Map<String,String> jsonArray) throws SQLException {
List<Object>recordList = new ArrayList<>();
OracleConnection oraConnection = getConnection();
OracleCallableStatement cs =(OracleCallableStatement) getConnection().prepareCall("BEGIN SCHEMA.PACKAGE.baseline_record_insert_bulk(?, ?); END;")
for(String key :jsonArray.keySet()){
Clob clob=oraConnection.createClob();
clob.setString(1, jsonArray.get(key));
Struct rec=oraConnection.createStruct("SCHEMA.TYPE_DTAP_RECORD_STORE", new Object[]{key,clob});
recordList.add(rec);
}
Array sqlArray = oraConnection.createOracleArray("SCHEMA.PACKAGE.RECORD_ARRAY", recordList.toArray());
cs.setObject(1, sqlArray);
cs.execute();
sqlArray.free();
cs.close();
}