码迷,mamicode.com
首页 > 数据库 > 详细

oracle如何向空表中添加一个类型为clob的非空列

时间:2017-09-01 23:05:30      阅读:467      评论:0      收藏:0      [点我收藏+]

标签:rac   内容   htm   .net   version   rem   tail   span   convert   

一般的添加非空列的步骤是:先add可以为空的列,然后update该列为一个值(比如0),最后modify该列的类型

但是遇到类型为clob的就不行了。在modify这步时报错:ORA-22296:invalid ALTER TABLE option for conversion of Long datatype to LOB,于是去找了下22296错误的详细信息:(http://docs.oracle.com/cd/E11882_01/server.112/e17766/e19999.htm#ORA-24230

Cause: An attempt was made to specify ALTER TABLE options which are disallowed during conversion of LONG datatype to LOB. The only ALTER TABLE options allowed during conversion of LONG datatype to LOB are the default clause and LOB storage clause for the column being converted to LOB.
Action: Remove the disallowed options.

解决办法:
在update这步执行:update tableName set colName = empty_clob();
在modify这步执行:alter table tableName modify (colName not null);//不是colName clob not null,这和一般的modify是不同的!!!

示例:
alter table post_info add  ( POST_CONTENT CLOB);
update post_info set post_content = empty_clob();
alter table post_info modify (POST_CONTENT not null);
COMMENT ON COLUMN "DBVOP"."POST_INFO"."POST_CONTENT" IS
‘通告内容‘;
commit;
---------------另外:如何将not null 的clob类型的类变为null的列
语法:alter table tableName modify colName null ;

注:EMPTY_BLOB()和EMPTY_CLOB()函数是用来对大数据类型字段进行初始化操作的。

-----------------如何删除列名带空格的列

alter table  cplnt_workorder drop column "CLIENT_ ISSUE"  ;

-----------------如何修改列名

alter table  cplnt_workorder rename column "CLIENT_ ISSUE1" to CLIENT_ ISSUE ;

 
http://blog.csdn.net/hjxdreamer/article/details/21230121

oracle如何向空表中添加一个类型为clob的非空列

标签:rac   内容   htm   .net   version   rem   tail   span   convert   

原文地址:http://www.cnblogs.com/seasonzone/p/7465232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!