Мы создали функцию для поиска повторяющихся записей в таблице. Курсор в функции всегда возвращает 0, даже если в таблице есть дубликаты. Мы можем получить точное количество дубликатов, выполнив запрос, но когда мы используем тот же запрос в курсоре, он ведет себя по-другому.
Мы попытались выполнить запрос. он дает ожидаемый результат, но ведет себя по-другому, когда включен в функцию.
create or replace function PL_DEV(dev_level in varchar2, remarks in
varchar2,wi_name in varchar2)
return number
is
resp number(8);
records number(10);
CURSOR RECORDS_INFO
IS
select count(WI_NAME) as reccount from PL_AUTO_DEV_GRID where
DEV_LEVEL=dev_level and REMARKS_MITIGANTS=remarks and WI_NAME=wi_name;
RECORDS_INFO_OBJ RECORDS_INFO%ROWTYPE;
begin
DBMS_OUTPUT.PUT_LINE('dev_level=='||dev_level||'');
DBMS_OUTPUT.PUT_LINE('remarks=='||remarks||'');
DBMS_OUTPUT.PUT_LINE('wi_name=='||wi_name||'');
OPEN RECORDS_INFO;
FETCH RECORDS_INFO INTO RECORDS_INFO_OBJ;
DBMS_OUTPUT.PUT_LINE('count from db=='||RECORDS_INFO_OBJ.reccount||'');
records:=RECORDS_INFO_OBJ.reccount;
DBMS_OUTPUT.PUT_LINE('records=='||records||'');
CLOSE RECORDS_INFO;
if records=0 then
resp:=0;
end if;
if records!=0 then
resp:=1;
end if;
return resp;
end;
Ожидаемый результат: Точное количество
Фактический результат: 0