Привет, поэтому я создал хранимую процедуру, которая содержит много курсоров, и используемый курсор будет зависеть от передаваемых переменных. У меня была идея очистить мою хранимую процедуру, поместив все курсоры в функцию, а затем вернув еекурсор нужен.Таким образом, если мне нужно больше создавать курсоры, я могу просто изменить функцию.
вот моя функция:
create or replace function E_P_CURSOR (p_schoolid number, p_mode number, p_d varchar2)
return sys_refcursor
is
rf_cur sys_refcursor;
begin
IF (p_schoolid = 2243 and p_mode = 1) then
open rf_cur for
SELECT ..........;
return rf_cur;
end if;
end E_P_CURSOR;
Но когда я пытаюсь скомпилировать свою основную процедуру, она выдает ошибку.
Procedure P_DF(p_schoolid IN number, p_mode In Number) As
v_cursor sys_refcursor;
....
....
BEGIN
v_cursor:= E_P_CURSOR (p_schoolid, p_mode, v_d);
FOR cur_rec IN v_cursor LOOP
UTL_FILE.PUT_LINE(v_file,cur_rec.col1||cur_rec.col2||cur_rec.col3||cur_rec.col4||cur_rec.col5||cur_rec.col6||cur_rec.col7||cur_rec.col8);
END LOOP;
END;
..
ошибка: [Ошибка] PLS-00221 (671: 26): PLS-00221: «V_CURSOR» не является процедурой или не определена
....