Вы (все еще) не можете выбрать положение столбца с помощью ALTER TABLE: его можно добавить только в конец таблицы. Очевидно, что вы можете выбирать столбцы в любом порядке, который хотите, поэтому, если вы не используете SELECT * FROM, порядок столбцов не должен быть большим делом.
Если вы действительно должны располагать их в определенном порядке, и вы не можете удалить и заново создать таблицу, то вы можете вместо этого удалить и воссоздать столбцы: -
Первая копия таблицы
CREATE TABLE my_tab_temp AS SELECT * FROM my_tab;
Затем удалите столбцы, которые вы хотите быть после столбца, который вы вставите
ALTER TABLE my_tab DROP COLUMN three;
Теперь добавьте новый столбец (два в этом примере) и те, которые вы удалили.
ALTER TABLE my_tab ADD (two NUMBER(2), three NUMBER(10));
Наконец, добавьте обратно данные для воссозданных столбцов
UPDATE my_tab SET my_tab.three = (SELECT my_tab_temp.three FROM my_tab_temp WHERE my_tab.one = my_tab_temp.one);
Очевидно, что ваше обновление, скорее всего, будет более сложным, и вам придется обрабатывать индексы и ограничения, и в некоторых случаях вы не сможете использовать это (столбцы больших объектов и т. Д.). Кроме того, это довольно отвратительный способ сделать это - но таблица всегда будет существовать, и вы получите столбцы в нужном вам порядке. Но так ли важен порядок столбцов?