반응형

Oracle 로고

오라클(Oracle)에서 프로시저를 개발 할 때, CURSOR 문을 정말 많이 사용하는데 CURSOR문을 사용하다가 fetch 문의 into 항목에 값의 수가 잘못됐습니다. 라는 문제가 나왔는데, 이번 글에서는 이 문제 해결 방법에 대해 글을 작성한다.


목차

1. 문제 상황
2. 해결 방법

1. 문제 상황

프로시저를 개발할 때, CURSOR 문을 아래와 같이 사용한다.

CURSOR 커서_ID IS   
	SELECT 컬럼01
    	 , 컬럼02
    	 , 컬럼03
	  FROM TEST01
	 WHERE 1 = 1

 

TEST01이라는 테이블에서 컬럼01, 컬럼02, 컬럼03이라는 데이터를 가져와서 커서_ID에 저장을 한다. 그리고 나서, 이 커서_ID를 가지고 INSERT나 UPDATE 등에 사용이 된다.

 

OPEN 커서_ID;

LOOP FETCH 커서_ID    
            INTO V_TEST01;

 

위와 같이, 커서_ID를 가지고 OPEN 하여 LOOP를 돌리려고 LOOP FETCH까지 해서 V_TEST01에 넣으려고 하니, 이제 "오라클(Oracle) fetch 문의 into 항목에 값의 수가 잘못됐습니다." 라는 에러가 발생한다.

 

2. 해결 방법

"오라클(Oracle) fetch 문의 into 항목에 값의 수가 잘못됐습니다."의 해결 방법은 아래와 같다.

 

CURSOR 문을 사용할 때, 테이블에서 가져오는 컬럼의 개수와 INTO를 할 때, 선언했던 컬럼의 개수가 맞는지 확인해야한다.

V_TEST01 TEST02%ROWTYPE;

 

프로시저를 개발할 때, V_TEST01을 TEST02테이블의 ROWTYPE으로 선언을 했다. 그래서, TEST01 테이블과 TEST02 테이블의 컬럼 스펙이 다르니, FETCH INTO 할 때 컬럼의 개수가 달라 위와 같은 에러가 발생한다. 그래서, 처음 CURSOR에서 커서_ID를 선언할 때, 컬럼의 개수를 맞추던지, 아니면 INTO를 하는 변수의 ROWTYPE을 같게 만들어주던지 해야 한다.

 


 

 

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