如何修改记录数组中的字段

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 中完成了以下操作:

但是当我尝试修改数组中记录的字段时出现语法错误。

l_classes_array[i].field1 := l_value;

错误是 ERROR: syntax error at or near "." Position: 12414,其中位置指向 [i] 之后的 .。我不知道是什么导致了这个语法错误。

我的目标是将记录数组存储在一个变量中,以便我能够修改各个数组元素的各个字段。

以下Q/A有您问题的原因及解决方法: