函数 returns 1 即使没有匹配的记录
Function returns 1 even when there's not matching record
我在一个包上有以下功能。当运行ning那个针对不匹配记录的函数时,结果总是1。
这就是我 运行 函数并在 DBMS 输出中查看输出的方式 window
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;
请尝试更改 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 会使用哪些规则来解决您当前的情况,但即使它可以工作,最好还是避免它。
我在一个包上有以下功能。当运行ning那个针对不匹配记录的函数时,结果总是1。
这就是我 运行 函数并在 DBMS 输出中查看输出的方式 window
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;
请尝试更改 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 会使用哪些规则来解决您当前的情况,但即使它可以工作,最好还是避免它。