Postgres har en dedikeret funktion til netop det formål:array_fill()
:
Brug det:
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;
Bemærkninger
- Matrixdimensioner i
numeric[7][24]
er blot dokumentation. Manualen:
-
Om tildelingsoperatoren i plpgsql:
:=
eller=
: -
Det er generelt ikke muligt at skrive til et array-element direkte. Du kan sammenkæde eller tilføje / tilføje elementer. Eller tildel et array som helhed. Detaljer i manualen. Men et udsagn som dette er ikke muligt :
tarifas[%][%] = 0 -
Standard nedre grænse for et array er 1, ikke 0. Men du kan definere vilkårlig array-dimension. Eksempel:
SELECT '[2:3][2:4]={{7,7,7},{7,7,7}}'::int[]