Я из мира 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);
Определенпроцедура с локальной переменной типа Array типа 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]
.Я понятия не имею, что является причиной этой синтаксической ошибки.
Моя цель - сохранить массив переменных в переменной, чтобы иметь возможность изменять отдельные поля отдельных элементов массива.