ORA-54033: column to be modified is used in a virtual column expression(удалить виртуальный столбец)
При изменении типа столбца может выскочить ошибка ошибка ORA-54033: column to be modified is used in a virtual column expression.
Оказывается Oracle в вашей таблице создал виртуальный столбец на базе вашего, который вы хотите изменить.
Посмотреть наличие виртуальных столбцов в таблице можно запросом:
SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT, HIDDEN_COLUMN FROM USER_TAB_COLS WHERE TABLE_NAME = UPPER('<ИМЯ ТАБЛИЦЫ>');
Удалить системный столбец SYS_* обычной командой DROP COLUMN не получится. Выйдет ошибка: ORA-12996 cannot drop system-generated virtual column
Поэтому удаляем скриптом ниже:
BEGIN dbms_stats.drop_extended_stats('<ИМЯ_СХЕМЫ>', '<ИМЯ_ТАБЛИЦЫ>', '<Содержимое строки из DATA_DEFAULT, после "SYS_OP_COMBINED_HASH">'); END;
Далее можем модифицировать нужный нам столбец.
Источники
https://stackoverflow.com/questions/32184331/error-ora-54033-when-calling-a-procedure