Вы не можете, напрямую. Код, который вы пробовали, получит «ORA-22859», предположительно. (Конечно, полезно показать фактические ошибки, которые вы получаете).
Вам нужно будет добавить новую колонку varchar2
; скопируйте данные через - или подстроку, если она может быть больше, чем новый столбец, который вы создаете; снимите столбец clob
. Вы можете переименовать столбцы, чтобы они выглядели достаточно прозрачными.
Как в этом SQL Fiddle:
alter table tbl_people rename column person to clob_person;
alter table tbl_people add (person varchar2(150));
update tbl_people set person = clob_person;
alter table tbl_people drop column clob_person;
Очевидно не удалить старую колонку, пока вы не уверены, что данные копируются без ошибок. Также учитывайте любые ограничения, индексы и т. Д., Которые могут существовать в старом столбце; их нужно будет воссоздать. И все, что ссылается на старый столбец, будет признано недействительным - обычно процедуры будут перекомпилированы при следующем использовании.
Так что будьте осторожны, сначала проверьте его и спланируйте время простоя.