如何访问 plpgsql 复合类型数组组件



假设我在Postgresql中创建了一个复合类型:

CREATE TYPE custom_type AS
   (x integer
    y integer);

我需要在函数中将其用作数组:

...
DECLARE
customVar custom_type[];
BEGIN
....

我的问题是:如何访问custom_type的特定组件?

例如,我想为数组中的第三个元素(重新)分配custom_type x"......

postgres=> 将 pt 类型创建为 (x int, y int);创建类型postgres=> 创建或替换函数 fx()返回 void 作为 $$声明 pt[] = 数组[(10,20),(30,40)];声明 xx pt;开始  对于我在array_lower(a,1)..array_upper(a,1)  圈    xx = a[i];xx.x := xx.x + 1;a[i] := xx;提高通知 '%', a[i].x;  结束循环;结束;$$ 语言 plpgsql;创建函数postgres=> 选择 fx();注意:11通知:31 外汇────(1 行)

分配语句目标的重要限制是可以只引用一个级别的嵌套属性。这个限制可以被辅助变量绕过 - 它不太友好 - 内部实现太简单,但它快速且足以用于典型的存储过程使用,尽管与通用编程语言相比它并不强。

给定:

SELECT ARRAY[(1,2),(3,4)]::custom_type[];

使用数组下标,然后按名称引用该字段。

regress=> SELECT (ARRAY[(1,2),(3,4)]::custom_type[])[1].x;
 x 
---
 1
(1 row)