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