Die linken Ausdrücke müssen in PLpgSQL ziemlich einfach sein. Die Kombination aus Array und zusammengesetztem Typ wird nicht unterstützt. Sie sollten einen Wert vom zusammengesetzten Typ festlegen und diesen Wert dann dem Array zuweisen.
CREATE OR REPLACE FUNCTION playx(OUT mod playz[]) AS $$
DECLARE r playz;
BEGIN
FOR i in 1..5 LOOP
r.a = 1;
r.b = 12.2;
r.c = 1;
r.d = 0.02;
mod[i] = r;
END LOOP;
END;
$$ LANGUAGE plpgsql;
Es gibt eine mögliche Abkürzung:
CREATE OR REPLACE FUNCTION public.playx(OUT mod playz[])
LANGUAGE plpgsql
AS $function$
BEGIN
FOR i in 1..5 LOOP
mod[i] = ROW(1, 12.2, 1, 0.02);
END LOOP;
END;
$function$;