
OCI Fetch 함수를 사용할 때 발생하는 오류는 주로 fetched_data 변수의 데이터 타입이 cursor의 select 문과 일치하지 않거나, fetch 함수의 인수 개수가 맞지 않을 때 발생합니다.
위 코드에서 fetched_data 변수는 테이블명%ROWTYPE으로 선언되어 있습니다. 이 경우, fetch 함수의 인수 개수가 테이블의 컬럼 개수와 일치하지 않기 때문에 오류가 발생합니다.
해결 방법은 fetch 함수의 인수 개수를 맞춰주거나, fetched_data 변수의 데이터 타입을 테이블명%ROWTYPE 대신에 테이블명%TYPE으로 선언하는 것입니다.
예를 들어, 테이블명이 "테이블명"이고, 테이블에 3개의 컬럼이 있다고 가정해 보겠습니다. 이 경우, fetched_data 변수를 테이블명%ROWTYPE 대신에 테이블명%TYPE으로 선언하면 됩니다.
sql
declare
cursor c is
select * from 테이블명;
fetched_data 테이블명.column1%TYPE;
fetched_data 테이블명.column2%TYPE;
fetched_data 테이블명.column3%TYPE;
begin
open c;
fetch c into fetched_data.column1, fetched_data.column2, fetched_data.column3;
dbms_output.put_line(fetched_data.column1);
close c;
end;
또는, fetch 함수의 인수 개수를 맞춰주면 됩니다.
sql
declare
cursor c is
select * from 테이블명;
fetched_data 테이블명%ROWTYPE;
begin
open c;
fetch c into fetched_data;
dbms_output.put_line(fetched_data.column1);
close c;
end;
위 코드에서 fetch 함수의 인수 개수를 맞춰주면, fetched_data 변수에 데이터가 저장됩니다.
2025-05-06 07:45