Oracle中,如果一个列的类型为varchar2,那么它不能直接转换为clob类型。可以通过间接的方式来修改。下面为实验:SQL>create table test(id int,name varchar2(10));TablecreatedSQL>insert into test values(1,"a");1row insertedSQL>insert into test values(2,"b");1row insertedSQL>commit;CommitcompleteSQL>select * from test; ID NAME--------------------------------------- 1 a 2 b SQL> desc testNameType Nullable Default Comments---------------- -------- ------- --------ID INTEGER Y NAMEVARCHAR2(10) Y SQL> alter table test modify(name clob); altertable test modify (name clob) ORA-22858: 数据类型的变更无效 如果直接转换,报错!
我们可以通过间接的方式来操作:新建一个clob类型的列,将原列的值插入新建的列,然后删除原列,重命名新列。 SQL> alter table test add name1clob; Table altered SQL> update test setname1=name; 2rows updated SQL> select * from test; IDNAME NAME1---------------------------------------------------------------------------------- 1 a a 2 b b SQL> desc testName Type Nullable Default Comments----------------- -------- ------- --------ID INTEGER Y NAME VARCHAR2(10) Y NAME1CLOB Y SQL> commit;Commit completeSQL> alter table test dropcolumn name;Table alteredSQL> alter table test renamecolumn name1 to name;Table alteredSQL> select * from test; ID NAME--------------------------------------------------------------------- 1 a 2 bSQL> desc testNameType Nullable Default Comments----------- -------- ------- --------ID INTEGER Y NAMECLOB Y
相关阅读:GoldenGate不使用数据泵完成Oracle-Oracle的双向复制 http://www.linuxidc.com/Linux/2013-10/92020.htm使用GoldenGate的数据泵进行Oracle-Oracle的单向复制 http://www.linuxidc.com/Linux/2013-10/92019.htm如何对 Oracle 数据泵(expdp/impdp) 进行 debug http://www.linuxidc.com/Linux/2013-06/85232.htmOracle 数据库导出数据泵(EXPDP)文件存放的位置 http://www.linuxidc.com/Linux/2013-05/83774.htmOracle 10g 数据泵分区表的导出 http://www.linuxidc.com/Linux/2012-07/66620.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12ORA-12988: cannot drop column from table owned by SYSORA-00600 内部错误代码, 参数 [kdsgrp1]相关资讯 ORA-22858 本文评论 查看全部评论 (0)