我来自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 数组类型的局部变量的过程:
l_classes_array t_class_record [];
但是当我尝试修改数组中记录的字段时,我收到语法错误。
l_classes_array[i].field1 := l_value;
错误ERROR: syntax error at or near "." Position: 12414
位置指向[i]
之后的.
。我不知道是什么导致了这个语法错误。
我的目标是在变量中存储记录数组,以便能够修改单个数组元素的各个字段。
以下问答提供了问题的原因和解决方案:
PL/pgSQL:访问自定义类型数组的元素的字段