JDBC에서 executeBatch()를 사용해서 데이터를 INSERT할 경우,
BatchUpdateException 예외 처리에서 해당 열을 정확히 알 수 있는 방법이 있는지요.
아래와 같이 하면 알수는 있는데.. 이게..
Oracle에서는 사용이 가능한데.. 다른 DB(MSSQL)에서는 사용이 불가능하더군요.
예를 들어
데이터를 넣을때, 아래와 같이 3행에만 최대길이를 넘는 데이터를 넣을 경우
결과값과 같이 찍어주고자 합니다.
1행 - 에러없는 데이터
2행 - 에러없는 데이터
3행 - 에러있는 데이터
4행 - 에러없는 데이터
코드
catch (BatchUpdateException bex) {
int[] updateCount = bex.getUpdateCounts();
int batchIndex = idxCount * BATCH_SIZE + updateCount.length;
return new EDBException(EDBExceptionDefine.ERR_EXECUTE, EDBExceptionDefine.STR_EXECUTE, sql, bex.getMessage(), list.get(batchIndex));
}
결과
EDB-10003 : Execute failed.
ORA-12899: "EUC"."A_SAMPLE"."UNIQUE_ID" 열에 대한 값이 너무 큼(실제: 125, 최대값: 36)
INSERT INTO A_SAMPLE (seqno, unique_id, device) values (A_SAMPLE_SEQ.NEXTVAL, ?, ?)
INSERT INTO A_SAMPLE (seqno, unique_id, device) values (A_SAMPLE_SEQ.NEXTVAL, '11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111', '0003')
의견 부탁드립니다.
|