Функция возвращает 1, даже если нет соответствующей записи - PullRequest
0 голосов
/ 03 марта 2019

У меня есть следующая функция в пакете.При выполнении этой функции для несоответствующей записи результат всегда равен 1.

. Так я запускаю функцию и вижу вывод в окне вывода СУБД

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;

1 Ответ

0 голосов
/ 03 марта 2019

Пожалуйста, попробуйте изменить имя вашего параметра 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 будет использовать для разрешения вашей текущей ситуации,но даже если бы это можно было заставить работать, вероятно, было бы лучше просто избежать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...