Курсор возвращает 0 как количество, даже если в таблице доступны значения для указанного запроса в курсоре - PullRequest
0 голосов
/ 22 мая 2019

Мы создали функцию для поиска повторяющихся записей в таблице. Курсор в функции всегда возвращает 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...