2013-12-16 105 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; 

很明顯,直到你確信數據沒有錯誤複製不落舊列。還要考慮舊列中可能存在的任何約束,索引等;他們將需要重新創建。而引用舊列的任何內容都將失效 - 通常程序會在下次使用時重新編譯自己。

所以要小心,先測試一下,然後計劃一些停機時間。

相關問題