Имя типа записи не является его инициализатором.
На самом деле, в Oracle нет функции, подобной инициализации для типов записей:
Документация
Обратите внимание, что значения присваиваются отдельно каждому полю записи в
Пример 5-47. Вы не можете назначить список значений записи, используя
оператор присваивания. Нет конструкторской нотации для
записи.
Вы должны создать каждый объект отдельно, а затем создать коллекцию с ними:
declare
type tab_name is record (t_name varchar2(30),col_name varchar2(30));
type tab_list is table of tab_name;
name_1 tab_name;
table_names tab_list;
begin
name_1.t_name := 'ABC';
name_1.col_name := 'abc';
table_names := tab_list();
table_names.extend;
table_names(table_names.last) := name_1;
name_1.t_name := 'XYZ';
name_1.col_name := 'xyz';
table_names.extend;
table_names(table_names.last) := name_1;
for i in table_names.first..table_names.last
loop
dbms_output.put_line(table_names(i).t_name||'-'||table_names(i).col_name);
end loop;
end;
Коллекции имеют инициализаторы. Однако в вашем случае у вас есть набор типов записей, поэтому вам придется предварительно создавать записи, чтобы использовать их.