Доброго дня!
Есть следующие исходные данные
CREATE TABLE t_bbb( id int8, PRIMARY KEY ( id ) ); INSERT INTO t_bbb( id ) VALUES ( 1 ); INSERT INTO t_bbb( id ) VALUES ( 2 ); INSERT INTO t_bbb( id ) VALUES ( 3 ); INSERT INTO t_bbb( id ) VALUES ( 4 ); INSERT INTO t_bbb( id ) VALUES ( 5 ); CREATE OR REPLACE FUNCTION f_bbb( a_ int8 ) RETURNS TABLE( aa int8 , bb text , cc float8 ) AS $$ BEGIN raise notice 'f_bbb'; -- показывает сколько раз вызывалась хранимая процедура RETURN QUERY SELECT ( a_ + 1 )::int8, 'test'::text, 3.141592::float8; END; $$ LANGUAGE plpgsql;
вызываем хранимую процедуру для всех строк таблицы следующим образом:
SELECT ( f_bbb( id ) ).* FROM t_bbb;
SELECT f_bbb( id ) FROM t_bbb;
А теперь собственно вопрос - как написать запрос чтобы хранимая процедура вызывалась 5 раз, но при этом возвращалась таблица (3 столбца 5 строк)?
Пробовал создавать тип
CREATE TYPE bbb AS ( aa int8, bb text, cc float8 );
SELECT ( ( b.* )::bbb ).* FROM ( SELECT f_bbb( id ) FROM t_bbb ) AS b;
Если присутствует понятие о
Если присутствует понятие о том, что
SELECT ( f_bbb( id ) ).* FROM t_bbb; = SELECT (f_bbb (id)).aa, (f_bbb (id)).bb, (f_bbb (id)).cc FROM t_bbb; тогда результат должен быть не только понятен но и очивиден.
Есть вариант с функцией
Решение
Спасибо за ответ, но решение выглядит проще...
условие
Запрос, который выдает требуемое решение