Я использую Курсор в процедуре, здесь я не использую Массовый сбор, так как у меня много вычислений для записей, извлеченных из Курсора.
В операторе Select Курсора Где предложение изменяется в зависимости от условия, яя пытаюсь использовать код, как показано ниже, но он дает мне ошибку:
Ошибка (19,12): PLS-00103: Обнаружен символ "c_recs" при ожидании одного из следующих действий:: =.(@%;
create or replace PROCEDURE "test"
(fromdate_in IN varchar2,
todate_in IN varchar2,
atype_in IN number
)
is
begin
if atype_in = 01 then
cursor c_recs IS SELECT cname FROM A_AUD AA WHERE AA.atime BETWEEN to_date( '' || fromdate_in || '' ,'DD/MM/RRRR')
AND to_date('' || todate_in || '','DD/MM/RRRR') AND AA.CTYPE IN ('RAlert');
elsif atype_in = 02
cursor c_auditrecs IS SELECT cname FROM A_AUD AA WHERE AA.atime BETWEEN to_date( '' || fromdate_in || '' ,'DD/MM/RRRR')
AND to_date('' || todate_in || '','DD/MM/RRRR') AND AA.CTYPE IN ('DAlert');
end if;
end
begin
--more logic
FOR rec IN c_recs LOOP
---calculations
END LOOP;
END test;
Я не хочу использовать SYS_REFCURSOR из сети, я читал, что курсоры немного лучше, чем ref-курсоры.