Que yo sepa, la forma mas parecida de simular un bulk collect en postgresql es con arrays y de igual forma con tipos de datos personalizados.
Código SQL:
Ver originalCREATE TYPE type_tu_tipo AS
(fecha TIMESTAMP WITHOUT TIME zone,
edad INTEGER,
nombre VARCHAR(100));
Estos tipos se deben declarar antes de ser usados, a diferencia de oracle que pueden ser volatiles en el tiempo de vida del bloque, función o procedimiento.
Posterior, se declara:
Código SQL:
Ver originalv_mi_variable type_tu_tipo[];
v_mi_variable := array(SELECT (fecha,edad,nombre)::type_tu_tipo FROM tabla);
Ya despues de tener el array cargado, puedes proceder a recorrerlo.
Saludos