填充多维数组

Cle*_*ida 2 arrays postgresql plpgsql multidimensional-array

我正在尝试在PostgreSQL上填充多维数组,但它不起作用.在我的代码下面:

CREATE OR REPLACE FUNCTION teste()
  RETURNS void AS
$BODY$
DECLARE
    tarifas NUMERIC[7][24];
    a INTEGER;
    b INTEGER;

    BEGIN
        FOR a IN 0..6 LOOP
            RAISE NOTICE 'TESTE TESTE %', a;
            FOR b IN 0..23 LOOP
                RAISE NOTICE 'tarifas[%][%] = 0;', a, b;
                tarifas[a][b] = 0;
            END LOOP;
        END LOOP;
    END
$BODY$
  LANGUAGE plpgsql VOLATILE;
Run Code Online (Sandbox Code Playgroud)

Erw*_*ter 5

Postgres具有专门用于此目的的功能:array_fill().每个文件:

返回使用提供的值和维度初始化的数组,可选择使用除1之外的下限

用它:

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;
Run Code Online (Sandbox Code Playgroud)

笔记

当前实现也不强制声明的维数.无论尺寸大小或数量如何,特定元素类型的数组都被认为是相同类型的.因此,声明数组大小或维数 CREATE TABLE是简单的文档; 它不会影响运行时行为.