oracle如何向空表中添加一个类型为clob的非空列
Posted seasonzone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle如何向空表中添加一个类型为clob的非空列相关的知识,希望对你有一定的参考价值。
一般的添加非空列的步骤是:先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;
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 ;
以上是关于oracle如何向空表中添加一个类型为clob的非空列的主要内容,如果未能解决你的问题,请参考以下文章