database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41752 게시물 읽기
No. 41752
executeBatch()에서 발생하는 BatchUpdateException 예외 처리 관련
작성자
권기혁(leolo)
작성일
2019-08-19 09:15
조회수
2,241

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')

 

 

의견 부탁드립니다.

 

[Top]
No.
제목
작성자
작성일
조회
41755파티션테이블의 테이블 스페이스 변경 방법 좀 알려주세요.
궁금해
2019-09-20
2024
41754오라클 12c에서 생성 가능한 파티션 테이블 개수 [2]
차차
2019-08-26
2922
41753쿼리 조언좀 구하고 싶습니다ㅠㅠ [1]
rkskekfk
2019-08-19
2489
41752executeBatch()에서 발생하는 BatchUpdateException 예외 처리 관련
권기혁
2019-08-19
2241
41751오라클 제약조건 비활성화->활성화 후 imp 안됨 [1]
노진규
2019-08-16
2000
41750조언을 구하고자 합니다.(이력관리)
기쁨이
2019-08-16
2108
41749하루 시간의 데이터 뽑기 [1]
게스트
2019-08-09
2401
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다