Wyrażenia po lewej stronie muszą być całkiem proste w PLpgSQL. Kombinacja typu tablicowego i złożonego nie jest obsługiwana. Powinieneś ustawić wartość typu kompozytowego, a następnie tę wartość przypisać do tablicy.
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;
Możliwy jest skrót:
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$;