ORA-22858: 数据类型的变更无效

        今天在项目中需要更改一个字段类型,由varchar2改为blob,碰到了ORA-22858错误。后来通过先删后建的方式,曲线救国,具体过程如下:
1.创建测试表HOEGH 

点击(此处)折叠或打开

  1. SQL>
  2. SQL> create table HOEGH(id number,name varchar2(30),loc varchar2(30));
  3.  
  4. Table created
  5.  
  6. SQL> insert into HOEGH values(1,\'Sun\',\'Huaguoshan\');
  7.  
  8. 1 row inserted
  9.  
  10. SQL> insert into HOEGH values(2,\'Zhu\',\'Gaolaozhuang\');
  11.  
  12. 1 row inserted
  13.  
  14. SQL> insert into HOEGH values(3,\'Sha\',\'Liushahe\');
  15.  
  16. 1 row inserted
  17.  
  18. SQL> commit;
  19.  
  20. Commit complete
  21.  
  22. SQL>
  23. SQL> select * from hoegh;
  24.  
  25.         ID NAME LOC
  26. ---------- ------------------------------ ------------------------------
  27.          1 Sun Huaguoshan
  28.          2 Zhu Gaolaozhuang
  29.          3 Sha Liushahe
  30.  
  31. SQL>

2.修改字段LOC类型报错

点击(此处)折叠或打开

  1. SQL>
  2. SQL> desc hoegh
  3. Name Type Nullable Default Comments
  4. ---- ------------ -------- ------- --------
  5. ID NUMBER Y
  6. NAME VARCHAR2(30) Y
  7. LOC VARCHAR2(30) Y
  8.  
  9. SQL>
  10. SQL> alter table hoegh modify(loc blob);
  11.  
  12. alter table hoegh modify(loc blob)
  13.  
  14. ORA-22858: 数据类型的变更无效
  15.  
  16. SQL>

3.删除原有字段LOC,新建blob字段

点击(此处)折叠或打开

  1. SQL> alter table hoegh drop column loc;
  2.  
  3. Table altered

  4. SQL> alter table hoegh add loc blob;
  5.  
  6. Table altered
  7.  
  8. SQL> desc hoegh
  9. Name Type Nullable Default Comments
  10. ---- ------------ -------- ------- --------
  11. ID NUMBER Y
  12. NAME VARCHAR2(30) Y
  13. LOC BLOB Y
  14.  
  15. SQL>



疑问:
1.上述解决方案,被修改列的数据全部丢失,如果要保留数据,又该如何处理呢?
2.后来试了其他数据类型,例如,number类型改为blob类型也报错,不明白其中深层次的原因,还请路过的不吝赐教。
请使用浏览器的分享功能分享到微信等