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;

---------------另外:如何将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

时间: 2024-08-05 02:33:20

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

在数据表中添加一个字段的SQL语句怎么写

如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识. 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0 alter table [表名] add 字段名 int default 0 增加数字字段,长整型,缺省值为0

MYSQL表中设置字段类型为TIMESTAMP时的注意事项

在MYSQL中,TIMESTAMP类型是用来表示日期的,但是和DATETIME不同,不同点就不再这里说明了. 当我们在使用TIMESTAMP类型设置表中的字段时,我们应该要注意一点,首先我们在表中新增一个类型为TIMESTAMP的字段: 如上图所示,系统为类型为TIMESTAMP的tm字段自动创建了默认值CURRENT_TIMESTAMP(系统日期),下面我们看表中的数据,新增的列自动填充了系统日期的值: 下面我们在表中继续新增一个类型为TIMESTAMP类型的字段tm1,然后查看表结构: 如上

使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MySQL Workbench建立数据库,建立新的表,为表添加数据. 点击上图中的“加号”图标,新建一个连接, 如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击“OK”,连接就建立好了,建立完成后,会出现一个长方形的框框,双击它,出现下图所示页面 点击图中的红圈里的按钮,新建一个Schema,即数据库(个人理解..),修改一下Name 的值,如  mydat

[原创]SQL 把表中某一个列按照逗号拼接成一行

在我们开发的过程中,难免遇到一种场景,把某个表中的的某个列的值拼接成用逗号隔开的一行数据 如图:我们把UserId列拼接成一行数据 -------> 为此我写了一个存储过程来解决此类问题. -- Author:        LHM -- Create date: 2015-01-15 -- Description:    把表中某一个列按照逗号拼接成一行 --示例: EXEC [Sp_TableToString] 'cast([UserId] as varchar)','[X_RoleUser

对类HelloWorld程序中添加一个MessageBox弹窗

对类HelloWorld程序中添加一个MessageBox弹窗 分析: 任一程序运行的时候都会加载kernel32.dll的,但MessageBoxA()这个API却是在user32.dll中的.所以在HelloWorld.exe中是没办法直接添加MessageBoxA()的调用. 不过好在有kernel32.dll,其中有两个API可以解决user32.dll没加载的问题,分别是LoadLibraryA(filename)和GetProcAddress(hModule, 函数名). 操作: 清

Oracle 取两个表中数据的交集并集差异集合

Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了 employee CODE NAME GENDER 001 Tom M 002 Jerry M 003 Ana F salary CODE SALARY 001 2800 002 2500 00

02-SQLlite3之alter:在已有的表中添加、修改或删除列

alter table语句 用于在已有的表中添加.修改或删除列 原始表: 一.alter在表中添加新的列 语法:alter table table_name add column_name datatype 注意:sqlite3中alter不支持删除列的操作 注意:sqlite3中alter 不能更改一个已经存在的字段的名称.数据类型.限定符等等 二.alter修改表名 语法:alter table 表名 rename to 新表名;

解决向表中添加中文数据报错的问题

可能有人在往表中添加数据时会遇到这类报错 django.db.utils.InternalError: (1366, "Incorrect string value: '\\xE9\\x9A\\.................. 以下是亲测比较有效的解决方案 mysql版本:5.6 网传向DATABASES中添加 实际上效果并不明显,当然我也在此之后删表重建过了. 然后就只能另辟蹊径了 在这里看出character_set_database默认编码方式是拉丁文而不是utf8 所以接下来需要配置

Android系统中添加一个产品----图文详解

本文本着开源的精神介绍如何向一个Android系统中添加一个产品的整个过程,按照以下过程笔者有理由相信每个将要从事本行业的人都可以完成,其实添加一个产品并不难,难的是对其相关硬件的修改,好了废话不多说. 首先我们要创建一个属于自己产品的目录,这里以WY_device为例,以WY作为产品的名字. 首先从已经存在的产品中拷贝一个以产品的名字为名的.mk文件,修改为自己的.mk文件,在这里为WY.mk 对其进行如下的修改: 然后添加AndroidProducts.mk  这是添加产品的配置文件名路径,