PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

accedere agli elementi compositi dell'array plpgsql

Le espressioni a sinistra devono essere piuttosto semplici in PLpgSQL. La combinazione di tipo array e composito non è supportata. Dovresti impostare un valore di tipo composito, quindi assegnare questo valore all'array.

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;

È possibile una scorciatoia:

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$;