我来自Oracle世界,尝试迁移软件包过程。 本地类型在Oracle软件包中声明:
TYPE t_class_record IS RECORD
(
id_class classes.id_class%TYPE,
field1 number,
field2 number
);
TYPE t_classes_table IS TABLE OF t_class_record
INDEX BY BINARY_INTEGER;
l_classes_table t_classes_table;
l_classes_table
由SELECT语句初始化,此后对单个数组元素的单个字段进行如下修改:
l_classes_table(i).field1 := l_value;
到目前为止,我已经在PostgreSQL中完成了以下操作:
定义了与上面列出的结构相对应的复合类型:
CREATE TYPE t_class_record AS (id_class CHARACTER VARYING,
field1 INTEGER,
field2 INTEGER);
使用t_class_record的Array类型的局部变量定义了一个过程:
l_classes_array t_class_record [];
但是当我尝试修改数组中记录的字段时,出现语法错误。
l_classes_array[i].field1 := l_value;
错误是ERROR: syntax error at or near "." Position: 12414
,其中位置指向.
之后的[i]
。我不知道是什么导致了此语法错误。
我的目标是将一个记录数组存储在一个变量中,以便能够修改单个数组元素的单个字段。
答案 0 :(得分:1)
以下问题/解答列出了您的问题的原因和解决方案:
PL/pgSQL: accessing fields of an element of an array of custom type