Функция возвращает 1, даже если нет соответствующей записи

Его немного сложно, проверьте, работает ли он для вас

select a.id,if(a.parent = 0,@varw:=concat(a.id,','),@varw:=concat(a.id,',',@varw)) as list from (select * from recursivejoin order by if(parent=0,id,parent) asc) a left join recursivejoin b on (a.id = b.parent),(select @varw:='') as c  having list like '%19,%';

Ссылка на скрипт SQL http://www.sqlfiddle.com/#!2/e3cdf/2

Замените имя поля и таблицы соответствующим образом.

0
задан Jeffrey Johnston 3 March 2019 в 06:59
поделиться

1 ответ

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

0
ответ дан Tim Biegeleisen 3 March 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: