Вывод данных в цикле с условиями plpgsql

Нужно по условиям выводить данные в цикле. Что-то вроде генератора. Возможно такое в plgpsql?

create or replace function test()
    returns
        table
            (
                id        integer,
                x_double  double precision,
                x_integer integer,
                x_string  varchar(56),
                y_double  double precision,
                y_integer integer,
                y_string  varchar(56)
            )
    language plpgsql
as
$$
declare
    t_row record;
begin
    for t_row in select * from axes_data loop
--         какие то условия и возврат в цикле наподобии генератора в python
        return t_row;
    end loop;
end;
$$;

Ответы (1 шт):

Автор решения: Мелкий

return next или return query ищете вы.

Первый же пример в документации прямо повторяет структуру вашей функции test

CREATE OR REPLACE FUNCTION get_all_foo() RETURNS SETOF foo AS
$BODY$
DECLARE
    r foo%rowtype;
BEGIN
    FOR r IN
        SELECT * FROM foo WHERE fooid > 0
    LOOP
        -- can do some processing here
        RETURN NEXT r; -- return current row of SELECT
    END LOOP;
    RETURN;
END;
$BODY$
LANGUAGE plpgsql;
→ Ссылка