반응형

Oracle 로고

오라클 DB에서 INSERT문을 사용할 때 시퀀스를 넣어야 하는 경우가 있다. 그래서, 시퀀스를 호출해서 하려고 하니  ORA-02287: 시퀀스 번호는 이 위치에 사용할 수 없습니다 이 문제가 발생했다. 이번 글에서는 오라클 DB에서 ORA-02287: 시퀀스 번호는 이 위치에 사용할 수 없습니다에 대한 문제 해결 방법을 기록한다.


목차

1. 문제 발생 원인
2. 문제 해결 방법

1. 문제 발생 원인

오라클 DB에서 INSERT를 하려고 하는데 아래와 같은 에러가 발생했다.

ORA-02287: 시퀀스 번호는 이 위치에 사용할 수 없습니다

 

그래서 찾아봤는데, INSERT를 할 때 GROUP BY 등을 사용할 때 에러가 난다고 하는데, 내 경우에는 GROUP BY를 사용하지 않고 기본적인 INSERT 문을 사용했다.

 

사용한 쿼리는 아래와 같다.

INSERT INTO TEST (
	SEQNO
) VALUES (
	(SELECT SEQ_TEST01.NEXTVAL FROM DUAL)
)

 

TEST 테이블에서 SEQNO 컬럼에 SEQ_TEST01이라는 시퀀스 VALUE를 넣으려고 했다. 그래서 값을 가져와서 넣으려고 하니 에러가 발생했다.

 

2. 문제 해결 방법

프로시저를 짜다 보니 INSERT문에서 시퀀스 호출하는 방법에 대해 조금 헤깔렸다. 위의 쿼리를 아래와 같이 사용하면 된다.

INSERT INTO TEST (
	SEQNO
) VALUES (
	SEQ_TEST01.NEXTVAL
)

 

위와 같이, SELECT SEQ_TEST01.NEXTVAL FROM DUAL이 아닌 SEQ_TEST01.NEXTVAL을 사용하여 VALUES에 넣으면 된다.


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기