我在包装上具有以下功能。针对不匹配的记录运行该函数时,结果始终为1。
这是我运行函数并在DBMS输出窗口中查看输出的方式
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;
答案 0 :(得分: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将使用哪些规则来解决您当前的情况,但是即使可以使之起作用,也最好避免使用它。