首页 > 解决方案 > 游标返回 0 作为计数,即使表中有可用的值可用于游标中提到的查询

问题描述

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

标签: oracleplsql

解决方案


推荐阅读