Arrays 填充多维数组
我正在尝试在PostgreSQL上填充多维数组,但它不起作用。下面是我的代码:Arrays 填充多维数组,arrays,postgresql,multidimensional-array,plpgsql,Arrays,Postgresql,Multidimensional Array,Plpgsql,我正在尝试在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;
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;
Postgres有一个专门用于此目的的功能: 返回使用提供的值和维度初始化的数组, 可选择使用除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;
笔记
中的数组维度只是文档李>numeric[7][24]
创建表
只是一个文档;它不影响运行时行为
- 关于plpgsql中的赋值运算符:
或:=
:=
- 通常不可能直接写入数组元素。您可以连接或附加/前置元素。或者将数组作为一个整体分配。但这样的说法是不可能的:
tarifas[%][%] = 0
SELECT '[2:3][2:4]={{7,7,7},{7,7,7}}'::int[]