레코드에 REF CURSOR를 반환하는 패키지에 함수가 있습니다. 코드 블록에서이 함수를 호출하려고합니다. 호출하는 코드는 다음과 같습니다레코드에서 참조 커서를 반환하는 함수에서 가져 오기
declare
a_record package_name.record_name;
cursor c_symbols is select package_name.function_name('argument') from dual;
begin
open c_symbols;
loop
fetch c_symbols into a_record;
exit when c_symbols%notfound;
end loop;
close c_symbols;
end;
PACKAGE_NAME의 일부가 이런 식으로 뭔가 보이는 함수 선언 : 나는 호출 코드 블록을 실행하려고하면
TYPE record_name IS RECORD(
field_a varchar2(20);
);
TYPE record_cursor IS REF CURSOR RETURN record_name;
FUNCTION getsymbols(argument IN varchar2) return record_cursor;
, 나는 예외를 얻을를 : PLS- 00386 : FETCH 커서와 INTO 변수 사이의 'EXAMPLE_SYMBOLS'에 유형 불일치가 있습니다.
a_record의 유형은 무엇이며 어떻게 가져오고있는 (record_name 유형의) 레코드의 개별 요소에 액세스 할 수 있습니까?
? 해당 레코드를 반복 할 수있는 방법이 있습니까? – neesh
위 코드가 수행하는 작업과 정확히 같습니다. 반환 된 커서에서 가져올 수있는 모든 행을 처리합니다. –