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[]