如何修改记录数组中的字段
How to modify a field in an array of records
我来自 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]
之后的 .
。我不知道是什么导致了这个语法错误。
我的目标是将记录数组存储在一个变量中,以便我能够修改各个数组元素的各个字段。
以下Q/A有您问题的原因及解决方法:
我来自 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]
之后的 .
。我不知道是什么导致了这个语法错误。
我的目标是将记录数组存储在一个变量中,以便我能够修改各个数组元素的各个字段。
以下Q/A有您问题的原因及解决方法: