我遇到一个问题,我试图存储在我的varchar2(4000)列中的数据太大,所以我希望将该列更改为更适合存储大量的文本数据。具体来说,一个序列化的数组。
>首先,CLOB是我用于此目的的最佳数据类型吗?是否有更合适的数据类型?
>其次,当我尝试使用通常的snyntax更改列:
ALTER TABLE table MODIFY column CLOB
我收到以下错误:ORA-22858:数据类型的无效更改
在不丢失任何数据的情况下更改此表格最简单的方法是什么?
最简单的方法是,由于不允许从varchar列移动到CLOB的操作,将创建一个新列并将数据从旧列移动到新列:
ALTER TABLE some_table ADD (foo CLOB); UPDATE some_table SET foo = old_column; ALTER TABLE some_table DROP COLUMN old_column; ALTER TABLE some_table RENAME COLUMN foo TO old_column;