即使表中有游标中提到的查询可用的值,游标也将返回0作为计数

时间:2019-05-22 09:52:57

标签: oracle plsql

我们创建了一个函数来查找表中的重复条目。即使表中有重复项,函数中的游标也始终返回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

0 个答案:

没有答案