PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

acessar elementos de array composto plpgsql


As expressões da esquerda devem ser bem simples em PLpgSQL. A combinação de matriz e tipo composto não é suportada. Você deve definir um valor do tipo composto e, em seguida, atribuir esse valor ao 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;

Existe um atalho possível:
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$;