假设我在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)