Это простая синтаксическая ошибка: предложение VALUES требует, чтобы все было заключено в скобки:
SQL> INSERT INTO student
2 values ( StudentType ('S999', 'Smith', 'John', MajorsType('Math', 'Accounting')))
3 /
1 row created.
SQL>
Это применимо, независимо от того, передаем ли мы несколько скалярных значений или один тип.
Единственный случай, когда он не применяется, это вставка в PL / SQL с использованием типа RECORD. Что не имеет отношения к вашей ситуации, но я упоминаю это для полноты.
Вставка переменной RECORD будет выглядеть примерно так
declare
r23 t23%rowtype; -- record declaration
begin
r23.id := 1;
r23.created := sysdate;
-- insert using record variable
insert into t23
values r23;
end;