Я пришел из мира 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 of t_class_record:
l_classes_array t_class_record [];
Но когда я пытаюсь изменить поле записи в массиве, я получаю синтаксическую ошибку.
l_classes_array[i].field1 := l_value;
Ошибка ERROR: syntax error at or near "." Position: 12414
, где position указывает на .
после [i]
. Я понятия не имею, что вызывает эту синтаксическую ошибку.
Моя цель - сохранить массив записей в переменной, чтобы я мог изменять отдельные поля отдельных элементов массива.