PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Remplir un tableau multidimensionnel

Postgres a une fonction dédiée à cet effet :array_fill() :

Utilisez-le :

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;

Remarques

  • Dimensions du tableau en numeric[7][24] ne sont que des documents. Le manuel :
  • À propos de l'opérateur d'affectation dans plpgsql ::= ou = :

  • Il n'est généralement pas possible d'écrire directement dans un élément de tableau. Vous pouvez concaténer ou ajouter/préfixer des éléments. Ou assignez un tableau dans son ensemble. Détails dans le manuel. Mais une déclaration comme celle-ci n'est pas possible :

    tarifas[%][%] = 0
  • La limite inférieure par défaut d'un tableau est 1, pas 0. Mais vous pouvez définir une dimension de tableau arbitraire. Exemple :

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