ora-01722: 수치가 부적합합니다

윤윤·2024년 4월 19일

error

목록 보기
1/12

발생 환경 : 주문하기에서 order 테이블에 주문내역을 넣을 때 orderid를 동일하게 설정해서 insert할 때 생긴 오류
발생 원인: number로 설정한 orderid 콜럼에 문자열을 넣어서 발생한듯.
해결➡️ 실행할 sql문 안에서 시퀀스 처리

▶️ 오류 발생 코드

String sql="insert into orders values(orderseq.nextval,?,?,?,?)";
ps = conn.prepareStatement(sql);
for(int i=0;i<clist.size();i++) {
	if(i == 0) {
    	ps.setString(1, "orderseq.nextval");
	}else {
   		ps.setString(1, "orderseq.currval");
	}
	ps.setInt(2, memno);
	ps.setInt(3, clist.get(i).getPnum());
	ps.setInt(4, clist.get(i).getPqty());
	ps.setInt(5, clist.get(i).getPrice()*clist.get(i).getPqty());
	cnt += ps.executeUpdate();
}//for

▶️ 수정 코드

for(int i=0;i<clist.size();i++) {

				if(i == 0) {
					String sql="insert into orders values(orderseq.nextval,?,?,?,?)"; 
					ps = conn.prepareStatement(sql);
				}else {
					String sql="insert into orders values(orderseq.currval,?,?,?,?)";
					ps = conn.prepareStatement(sql);
				}
				ps.setInt(1, memno);
				ps.setInt(2, clist.get(i).getPnum());
				ps.setInt(3, clist.get(i).getPqty());
				ps.setInt(4, clist.get(i).getPrice()*clist.get(i).getPqty());
				cnt += ps.executeUpdate();
				System.out.println("업데이트 성공 :"+cnt);
			}

0개의 댓글