2013-12-16 78 views
2

我有数据库和一些文本字段是CLOB类型,我需要将其中大部分更改为VARCHAR2Oracle SQL。如何更改表字段数据类型CLOB - > VARCHAR2

试图做的是使用SQL Developer工具,通过点击表格编辑,但得到错误像这样的:

下面的SQL语句失败:

ALTER TABLE TBL_PEOPLE MODIFY (PERSON VARCHAR2(150)) 

要问了,怎么能这个改变被做

回答

2

你不能,直接。大概你试过的代码会有一个`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; 

很明显,直到你确信数据没有错误复制不落旧列。还要考虑旧列中可能存在的任何约束,索引等;他们将需要重新创建。而引用旧列的任何内容都将失效 - 通常程序会在下次使用时重新编译自己。

所以要小心,先测试一下,然后计划一些停机时间。

相关问题