Oracle Type 및 Struct를 사용하여 해결 방법을 찾았습니다. 아래는 솔루션의 요약입니다. 1 단계 : 다음과 같이 유형을 작성하십시오. SQL Developer 또는 SQL Plus를 사용하여 데이터베이스 레벨에서 수행해야합니다. 패키지 내에 포함되지 않음
TYPE_DTAP_RECORD_STORE AS OBJECT (DATA_STORE_ID VARCHAR2 (300), INDEX_RECORD CLOB)를 생성 또는 교체하십시오.
STEP 2 : 패키지 위 형 형 RECORD_ARRAY의 배열을 정의가
BINARY_INTEGER
BY STEP 3 TYPE_DTAP_RECORD_STORE 인덱스 테이블 : 절차 baseline_record_insert_bulk (record_array에 i_record) 아래로 저장 프로 시저를 생성;
STEP 4 :
자바
, 저장 프로 시저
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();
}
에게 전화를 아래와 같은 방법 DAO 쓰기