oracle数值类型--LONG类型

2019独角兽企业重金招聘Python工程师标准>>> ...
摘要由CSDN通过智能技术生成

Oracle中的LONG类型有两种:
LONG文本类型,能存储2GB的文本。与VARCHAR2或CHAR类型一样,存储在LONG类型中的文本要进行字符集转换。
LONG RAW类型,能存储2GB的原始二进制数据(不用进行字符集转换的数据)。
在此并不解释如何使用LONG类型,而是会解释为什么你不希望在应用中使用LONG(或LONG RAW)类型。首先要注意的是,Oracle文档在如何处理LONG类型方面描述得很明确。Oracle SQL Reference手册指出:
不要创建带LONG列的表,而应该使用LOB列(CLOB、NCLOB、BLOB)。支持LONG列只是为了保证向后兼容性。

1 LONG和LONG RAW类型的限制

 

LONG/LONG RAW类型                                         CLOB/BLOB类型
每个表中只能有一个LONG或LONG RAW列         每个表可以有最多12.000个CLOB或BLOB类型的列
定义用户定义的类型时,不能有LONG/LONG     用户定义的类型完成可以使用CLOB和BLOB类型
RAW类型的属性
不能在WHERE子句中引用LONG类型                 WHERE子句中可以引用LOB类型,而且DBMS_LOB包
                                                                        中提供了大量函数来处理LOB类型
除了NOT NULL之外,完整性约束中不能引用     完整性约束中可以引用LOB类型
LONG类型
LONG类型不支持分布式事务                                 LOB确实支持分布式事务
LONG类型不能使用基本或高级复制技术来复制     LOB完全支持复制
LONG列不能在GROUP BY、ORDER BY或             只要对LOB应用一个函数,将其转换为一个标量SQL类型,

CONNECT BY子句中引用,也不能在使用了         如VARCHAR2、NUMBER或DATE,LOB就可以出现在
DISTINCT、UNIQUE、INTERSECT、MINUS     这些子句中
或UNION的查询中使用
PL/SQL函数/过程不能接受LONG类型的输入         PL/SQL可以充分处理LOB类型
SQL内置函数不能应用于LONG列(如SUBSTR)     SQL函数可以应用于LOB类型
CREATE TABLE AS SELECT语句中不能使用             LOB支持CREATE TABLE AS SELECT
LONG类型
在包含LONG类型的表上不能使用ALTER TABLE MOVE         可以移动包含LOB的表

如果表中有一个LONG列,那么很多事情都不能做。对于所有新的应用,甚至根本不该考虑使用LONG类型。相反,应该使用适当的LOB类型。对于现有的应用,如果受到表12.-2所列的某个限制,就应该认真地考虑将LONG类型转换为相应的LOB类型。由于已经做了充分考虑来提供向后兼容性,所以编写为使用LONG类型的应用也能透明地使用LOB类

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值