Вывод данных в цикле с условиями 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;