即使没有匹配的记录,函数也会返回1

问题描述 投票:0回答:1

我在包上有以下功能。当针对不匹配记录运行该函数时,结果始终为1。

这是我运行该函数并在DBMS Output窗口中查看输出的方法

set serveroutpuut on;
begin
    dbms_output.put_line (BP$BUSINESSPARNTNER_CODE.Check_rec('44887'));
end;

这是负责查询和计算记录的函数

   FUNCTION Check_rec(PartnerNumber IN VARCHAR2) RETURN NUMBER IS v_count NUMBER;
   BEGIN
        select count(PartnerNumber) into v_count from BusinessPartner where PartnerNumber = PartnerNumber and code is not null;
        RETURN v_count;
   END;

我尝试使用硬编码值运行,但它确实有效

FUNCTION Check_rec(PartnerNumber IN VARCHAR2) RETURN NUMBER IS v_count NUMBER;
       BEGIN
            select count(PartnerNumber) into v_count from BusinessPartner where PartnerNumber = '44887' and code is not null;
            RETURN v_count;
       END;
oracle oracle10g
1个回答
3
投票

请尝试更改IN参数的名称,以使其不与列名冲突:

FUNCTION Check_rec(pn IN VARCHAR2) RETURN NUMBER IS v_count NUMBER;
BEGIN
    SELECT COUNT(PartnerNumber) INTO v_count
    FROM BusinessPartner
    WHERE PartnerNumber = pn AND code IS NOT NULL;
    RETURN v_count;
END;

我不知道Oracle将用于解决您当前情况的规则,但即使可以使其工作,也可能最好避免它。

© www.soinside.com 2019 - 2024. All rights reserved.