오라클(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을 같게 만들어주던지 해야 한다.
'IT > Oracle' 카테고리의 다른 글
[Oracle] 오라클(Oracle) 문자열 SPLIT하는 방법 (0) | 2023.07.21 |
---|---|
[Oracle] 오라클(Oracle) ORA-01843 지정한 월이 부적합합니다 문제 해결 방법 (0) | 2023.07.11 |
[Oracle] 오라클(Oracle) 데이터 롤백하는 방법 (0) | 2023.07.05 |
[Oracle] 오라클(Oracle) 날짜 및 AMPM 구하는 방법 (0) | 2023.07.03 |
[Oracle] 오라클(Oracle) NUMBER 타입 소수점에 대한 글 (0) | 2023.06.11 |
[Oracle] 오라클(Oracle) 다중컬럼 IN 사용하는 방법 (0) | 2023.06.08 |
[Oracle] 오라클(Oracle) NOT NULL과 DEFAULT의 관계 (0) | 2023.06.03 |
[Oracle] 오라클(Oracle) 트리거 삭제하는 방법 (0) | 2023.06.02 |
최근댓글