PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Zugriff auf zusammengesetzte Array-Elemente plpgsql

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