`
最王座
  • 浏览: 140925 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle Long类型

阅读更多

一、Long简介

1、LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB。 
2、对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG来存储的。 
3、LONG类型主要用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。 
4、很多工具,包括SQL*Plus,处理LONG 数据类型都是很困难的。 
5、LONG 数据类型的使用中,要受限于磁盘的大小。 
能够操作 LONG 的 SQL 语句: 
1、Select语句 
2、Update语句中的SET语句 
3、Insert语句中的VALUES语句 


二、一些限制
1、一个表中只能包含一个 LONG 类型的列。 
2、不能索引LONG类型列。 
3、不能将含有LONG类型列的表作聚簇。 
4、不能在SQL*Plus中将LONG类型列的数值插入到另一个表格中,如insert into …select。 
5、不能在SQL*Plus中通过查询其他表的方式来创建LONG类型列,如create table as select。 
6、不能对LONG类型列加约束条件(NULL、NOT NULL、DEFAULT除外),如:关键字列(PRIMARY KEY)不能是 LONG 数据类型。 
7、LONG类型列不能用在Select的以下子句中:where、group by、order by,以及带有distinct的select语句中。 
8、LONG类型列不能用于分布查询。 
9、PL/SQL过程块的变量不能定义为LONG类型。 
10、LONG类型列不能被SQL函数所改变,如:substr、instr。 
因为long类型的数值不能用insert into … select的方法插入,故我们要分两步走,先插入其它字段,最后再插入long类型字段,这可以通过过程来实现.下面是一个我做实验实现的例子. 

SQL> create table testlong (id number,name varchar2(12),history long);

表已创建。
SQL>  create table testlong1 (id number,name varchar2(12),history long);

表已创建。

SQL> insert into testlong values(1, 'dwh', 'work in foshan');

已创建 1 行。

SQL> insert into testlong values(2,'sfg','work in guangzhou');

已创建 1 行。 
SQL> select history from testlong;

HISTORY
----------------------------------
work in foshan
work in guangzhou

 

SQL> insert into testlong1 select * from testlong;
insert into testlong1 select * from testlong
                             *
第 1 行出现错误:
ORA-00997: 非法使用 LONG 数据类型 

 

三、Hibernate自动建表时什么时候表字段的数据类型是Long

1. 当hbm property的type=string或java.lang.String,此时如果length>4000 char, 则hibernate在建表时会见字段类型定义为Oracle Long

2. 当hbm property的type=text时,则hibernate在建表时会见字段类型定义为Oracle Long

 

四、开发中注意问题

1. 一个表中不要出现两个字段的数据类型都是Oracle Long类型,否则会报错

2. 尽量不要使用Oracle Long类型

 

分享到:
评论

相关推荐

    hibernate映射Oracle中LONG类型

    "hibernate映射Oracle中LONG类型" Hibernate 框架映射 Oracle 中的 LONG 类型字段是一种复杂的技术问题。Oracle 中的 LONG 类型字段是一种特殊的数据类型,用于存储可变长字符串,最大长度限制是 2GB。这与 Java ...

    oracle里long类型

    Oracle 中的 LONG 数据类型 Oracle 中的 LONG 数据类型是一种特殊的数据类型,用于存储可变长字符串。LONG 数据类型的最大长度限制是 2GB,这使得它非常适合存储超出一定长度的文本。实际上,数据字典中很多对象的...

    oracle LongRaw 转 Blob

    在Oracle数据库中,LongRaw和Blob都是用于存储大对象(LOB)的数据类型,但它们有各自的特点和适用场景。在某些情况下,可能需要将LongRaw字段转换为Blob字段,这通常是因为Blob提供更好的管理和处理大型二进制数据...

    oracle LongRaw 转 Blob 源码

    Oracle数据库中,LongRaw和Blob是两种不同的数据类型,它们分别用于存储大对象(LOB)数据。LongRaw类型是Oracle的原始数据类型,用于存储二进制大对象,而Blob类型则是二进制大型对象,更适合存储大量的二进制数据...

    Oracle与.Net 数据类型映射

    1. **数值类型**:int、decimal、long、short等对应Oracle的NUMBER,bool对应PL/SQL的BOOLEAN。 2. **字符串类型**:string对应Oracle的VARCHAR2或CHAR,DateTimeOffset对应TIMESTAMP WITH TIME ZONE。 3. **日期/...

    java与oracle等数据库类型对应

    1. **Number**: 这种无精度和标度定义的"Number"可以存储任意大小的数字,理论上可以看作是Java中的任意整数类型(int、long、short、byte)。但需要注意,Oracle的"Number"没有指定精度时,其大小和Java的整型有所...

    ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).pdf

    1. Long类型: Long数据类型用于存储大文本数据,它最多可以存储约2GB的数据。然而,Long类型在处理大量数据时可能效率较低,且不支持索引。在Oracle 10g及更高版本中,建议使用Clob类型代替Long,因为Clob提供了更...

    ORACLE中LONG类型字段的存取[文].pdf

    在Oracle数据库中,LONG类型是一种用于存储大文本数据的字段类型,它可以容纳超过4000个字节的数据。在处理这种类型的数据时,有一些特定的方法和注意事项。 首先,我们来看一下如何在Oracle中创建一个包含LONG类型...

    oracle数据类型.doc

    随着技术发展,Long类型正逐渐被BLOB、CLOB和NCLOB等大对象数据类型取代。 6. **Raw(n)**: 用于存储固定长度的二进制数据,最大长度为2000字节,适用于小型图形或格式化文本文件。与Long一样,它也在逐渐被淘汰,被...

    Oracle基本数据类型存储格式浅析

    LONG类型用于存储大段文本,但其DUMP函数不支持,需要借助ALTER SYSTEM DUMP BLOCK来查看其内部结构。 其次,数字类型在Oracle中包括NUMBER、INTEGER、SMALLINT等。NUMBER类型可以存储非常大的数值,并具有极高的...

    oracle基本数据类型

    Oracle 中有多种字符类型,包括 char、varchar、varchar2、long 等。 * char(n):定长字符串,最大长度为 2000 字节。char 类型的字符串长度是固定的,可以指定长度,否则默认为 1 字节长。 * varchar(n):可变长...

    oracle新手入门指导之四——ORACLE数据类型 .txt

    ### Oracle新手入门指导之四——ORACLE数据类型 在Oracle数据库中,数据类型的选择对于确保数据的正确存储、处理效率以及资源的有效利用至关重要。本文将详细介绍Oracle中的各种数据类型及其特性,帮助初学者更好地...

    mssql2oracle类型对比

    - `text`: 大文本数据类型,等同于Oracle中的`LONG`类型。 - `ntext`: Unicode大文本数据类型,Oracle中没有直接对应的类型,可以使用`LONG`作为替代。 - **Oracle**: - `CHAR`: 固定长度的字符串,建议使用SQL ...

    Oracle与DB2数据类型分类对应说明

    DB2/400 提供 VARCHAR 和 CLOB 与 Oracle 中的 RAW 和 LONG RAW 相对应。Oracle 也支持大对象:BLOB、CLOB、NCLOB 等。例如,Oracle 中的 BLOB 和 CLOB 可以提供 4GB 的空间,而 DB2/400 中的 BLOB 和 CLOB 只能存放...

    ORA-01461 仅可以为插入 LONG 列的 LONG 值赋值”解决办法

    LONG 数据类型已经被oracle废弃,推荐使用 LOB(Large OBject)数据类型来代替。 那么,什么是 LOB 数据类型?LOB 数据类型是 Oracle 数据库中的一种数据类型,用于存储大型的二进制数据或字符串数据。LOB 数据...

    long_creat.zip--Oracle数据库LONG类型字段的完整C代码操作(CREATE TABLE)

    Oracle数据库LONG类型字段的完整C代码操作(CREATE INSERT SELECT DROP)之一--CREATE TABLE;免费下载有猫彬为你准备的代码包(已编译好,可直接运行,内含编译运行命令,直接复制粘贴即可

    sql server 和oracle 中数据类型的区别

    15. **LONG RAW**: 用于存储较大的二进制数据,同样不推荐在新版本的Oracle中使用,其在SQL Server中的对应类型为`image`。 16. **NCLOB**: 用于存储Unicode文本数据,在SQL Server中的对应类型为`ntext`。 综上所...

    oracle-java数据类型1

    - `LONGRAW` 类型对应 `oracle.sql.RAW` - `NUMBER` 类型可以存储不同精度的数值,对应 `oracle.sql.NUMBER` - `CHAR` 类型在 Oracle 中有扩展为 `oracle.sql.CHAR` - `VARCHAR2` 类型在 Oracle 中也有扩展为 `...

Global site tag (gtag.js) - Google Analytics