我试图循环一个具有两种类型的数组作为复合类型,但似乎我不能使用复合类型作为变量数组来循环它。我要完成的工作:
create type my_item as (
field_1 timestamp,
field_2 numeric
);
CREATE OR REPLACE FUNCTION unnest_2d_1d_my(ANYARRAY)
RETURNS TABLE (ts timestamp, value numeric) AS
$func$
DECLARE
a my_item[];
timestamp timestamp[];
value1 numeric[];
BEGIN
FOREACH a SLICE 1 IN ARRAY $1 LOOP
timestamp = array_append(timestamp, a.field_1);
value1 = array_append(value1,a.field_2);
END LOOP;
RETURN QUERY select unnest(timestamp), unnest(value1);
END
$func$
LANGUAGE plpgsql IMMUTABLE;
复合数组类型->(时间戳,数字):
CREATE TABLE test AS(SELECT * FROM unnest_2d_1d_my(array[['2018-01-01',2],['2018-01-02',5]]));
我期待作为输出:
ts | value
'2018-01-01' | 2
'2018-01-02' | 5
但目前我只收到以下错误:
invalid input syntax for integer: "2018-01-01"
我想知道如何使用多类型数组来实现上述输出。