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

Popola array multidimensionale

Postgres ha esattamente una funzione dedicata a questo scopo:array_fill() :

Usalo:

CREATE OR REPLACE FUNCTION teste()
  RETURNS void AS
$func$
DECLARE
    tarifas numeric[7][24] := array_fill(0, ARRAY[7,24]);
    a int;
    b int;
BEGIN
   -- do something
END
$func$  LANGUAGE plpgsql;

Note

  • Dimensioni dell'array in numeric[7][24] sono solo documentazione Il manuale:
  • Informazioni sull'operatore di assegnazione in plpgsql::= o = :

  • In genere non è possibile scrivere direttamente su un elemento dell'array. Puoi concatenare o aggiungere / anteporre elementi. Oppure assegnare un array nel suo insieme. Dettagli nel manuale. Ma un'affermazione come questa non è possibile :

    tarifas[%][%] = 0
  • Il limite inferiore predefinito di una matrice è 1, non 0. Ma è possibile definire una dimensione della matrice arbitraria. Esempio:

    SELECT '[2:3][2:4]={{7,7,7},{7,7,7}}'::int[]