【发布时间】:2019-06-21 11:56:03
【问题描述】:
我来自 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] 之后。我不知道是什么导致了这个语法错误。
我的目标是将记录数组存储在一个变量中,以便我能够修改各个数组元素的各个字段。
【问题讨论】:
标签: postgresql plpgsql postgresql-11