Где ошибка в функции sql?

CREATE OR REPLACE FUNCTION disp.test( tt integer, age character varying ) RETURNS  boolean  AS
$$
DECLARE
        x numeric;
        num character varying;
        model_age text [] ;
        xage numeric;
        actual_patient boolean;

BEGIN



actual_patient=false;
model_age=(select  array_agg(mmpb.age::text) ));-- в результате запроса данные ввида ["23,45,33", "2.0,67"]


xage:=age::NUMERIC;
if xage>=3 then xage:=trunc(xage); end if;
if model_age  is not null then
        FOREACH num IN ARRAY regexp_split_to_array(model_age, ',')
        LOOP
                x:=num::NUMERIC;
                if xage=x then actual_patient:=true; exit; end if;
        END LOOP;

        return actual_patient;
        else return actual_patient; end if;
EXCEPTION WHEN others THEN
        return trim(num);

END;
$$
LANGUAGE plpgsql VOLATILE
  COST 100;


Функция ничего не возвращает с если age=33.6
Подскажите пожалуйста в чем может быть ошибка
  • Вопрос задан
  • 341 просмотр
Пригласить эксперта
Ответы на вопрос 2
не выполняется цикл FOREACH

можете убедиться заменив
FOREACH num IN ARRAY regexp_split_to_array(model_age, ',')
на
FOREACH num IN ARRAY array[54, 33, 6, 7]
и вызвать с age=33.6
Ответ написан
Комментировать
@veliks1
Возможно, может без age?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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