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 * from testlong;ID NAME———- ————————HISTORY——————————————————————————–1 dwhwork in foshan2 sfgwork in guangzhouSQL>; insert into testlong1 select * from testlong;insert into testlong1 select * from testlong*ERROR 位于第 1 行:ORA-00997: 非法使用 LONG 数据类型SQL>; Declare2 CURSOR bcur3 IS SELECT id,history from testlong;4 brec bcur%ROWTYPE; //行数据5 BEGIN6 insert into testlong1(id,name) select id,name from testlong;–其它类型先插入7 OPEN bcur;8 LOOP9 FETCH bcur INTO brec;10 EXIT WHEN bcur%NOTFOUND; //判断游标有无。没有就退出。 11 update testlong1 set history=brec.history where id=brec.id;12 END LOOP;13 CLOSE bcur;14 END;15 /PL/SQL 过程已成功完成。SQL>; select * from testlong1;ID NAME———- ————————HISTORY————————————————————————–1 dwhwork in foshan2 sfgwork in guangzhouLONG列不能出现在SQL语句的某些部分:1、在WHERE、GROUP BY、ORDER BY、CONNECT BY子句以及在具有DISTINCT 操作的SELECT语句中。2、SQL函数(如SUBSTR或INSTR)3、表达式或条件。4、包含有GROUP BY子句的查询的选择表。5、在子查询的选择表或由集合操作组合查询选择表。6、CREATE TABLE AS SELECT语句的选择表。使用说明: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类型。用setCharacterStream()方法。
利用oracle long类型字段,插入大文本在编写应用时,需要大量的插入大文本,但是oracle 的clob操作起来比较繁琐,应此我没有选择使用clob,而是使用了oracle以前版本中的long类型[但是long类型有一些限制,在一个表中只能有一个long字段]。开始的时候我直接使用insert into table1 values(a,b[long])的方式插入数据库,但是oracle有些限制一条语句不能超过4000个字符,并报ORA-01704的错误。经过查找oracle 的文档找到了解决的方法,就是对于long的字段使用setCharacterStream()方法将String插入数据库。代码:sql=”insert into msg_info values (?,?,?,?[long类型字段],’C',sysdate,sysdate ” msgterm ”,?)”;pstat1 = conn.prepareStatement(sql);pstat1.setLong(1, msg_id);pstat1.setInt(2, msg_gp_id);pstat1.setString(3, msg_title);pstat1.setCharacterStream(4,new StringReader(msg_info.toString()),msg_info.length());conn.commit();pstat1.setLong(5, this.upid);
分享到:
相关推荐
在Oracle编程中,理解并熟练掌握数据类型至关重要,因为它们决定了数据如何存储、处理和检索。以下是对Oracle数据类型的详细总结,特别是字符和二进制串类型。 首先,我们来看字符类型。Oracle提供了四种基本的字符...
..oracle11里long数据类型的总结.docx
..oracle11里long数据类型的总结.pdf
### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...
18. **FLOAT**: 浮点数类型,Oracle中相当于NUMBER(38),提供双精度浮点数存储。 19. **REAL**: 实数类型,精度更高,相当于NUMBER(63),适合高精度计算。 这些字段类型的选择应基于数据的特性(是否是文本、二...
需要注意的是,LONG类型在Oracle 12c之后的版本中已经被废弃,建议使用CLOB代替。 - **RAW**: 用于存储固定长度的二进制数据,最大长度为2000字节。 - **LONG RAW**: 用于存储可变长度的二进制数据,最大长度同样为2...
总结来说,Oracle 和 SQL Server 数据类型在很多方面有相似之处,如字符串、数字、日期/时间、二进制数据类型,但在细节上有所差异,如长度限制、Unicode 支持和特定用途的类型(如 Oracle 的 Bfile 和 SQL Server ...
MySql 中的 TEXT 等同于 Oracle 中的 LONG 函数。 13. 日期函数 MySql 中的 EXTRACT 函数可以提取日期的年、月、日等信息,而 Oracle 需要使用 TO_CHAR 函数来实现。 14. 去年同比的写法 MySql 中的 EXTRACT ...
本文将详细介绍 Oracle 中的一些基本数据类型,并探讨它们之间的区别和应用场景。 #### 二、字符数据类型 ##### 1. CHAR (n) - **定义**: 定长字符串,n 字节长,默认情况下 n 的范围是从 1 到 2000。 - **特点**...
根据提供的文件信息,我们可以归纳出以下Oracle存储过程的相关知识点: ### Oracle存储过程基础概念 ...以上是基于提供的部分内容对Oracle存储过程进行的总结,包含了从基础概念到具体应用实例的全面解析。
在深入了解Oracle数据库中的各种数据类型之前,我们首先需要明确数据类型的基本概念。数据类型是由一组具有相同特性的值及其上定义的操作组成的一个集合。在现实世界中,为了有效地保存和处理不同类型的信息,我们...
总结,Oracle的数据类型丰富多样,涵盖了各种常见数据的存储需求,而行排序则是数据查询时不可或缺的一部分,帮助我们以有意义的方式展示和分析数据。理解并熟练运用这些概念对于任何Oracle数据库管理员或开发人员都...
1. Long类型:Long数据类型用于存储大文本数据,如用户简历(EMP_DESCLONG)。它能存储的最大长度为2GB。然而,由于Long字段在处理大量数据时性能较低,且不支持索引,所以在现代Oracle数据库设计中,通常推荐使用...
#### LONG类型 `LONG`类型用于存储较大的文本块,它可以存储最大达2GB的数据。然而,由于其维护起来比较麻烦且效率较低,现在很少被推荐使用,大多数情况下会被`CLOB`或`NCLOB`所替代。 **存储示例**: 在上面的...
总结,通过PowerBuilder连接Oracle数据库,我们可以高效地读取、处理和保存存储在数据库中的图片数据,实现对图片资源的有效管理。这个过程涉及到数据库连接、数据查询、二进制数据转换以及文件I/O操作等多个环节,...
根据描述中的部分信息,可以看出 Oracle 支持 ANSI SQL 标准中的数据类型。这些类型包括但不限于: - **字符类型**:`CHARACTER[VARYING]`, `CHAR`, `NCHAR`, `VARCHAR`, `NATIONAL CHARACTER` 等。 - **数值类型**...
在使用 WebLogic 服务器进行应用程序开发时,尤其是在处理 Oracle 数据库中的 CLOB 类型数据时,开发者可能会遇到类型转换的问题。本文将详细介绍如何通过反射机制来解决 WebLogic 环境下 Oracle CLOB 类型转换成 `...
【描述】: 本文主要探讨了在Visual C++(VC)环境下,利用Oracle Objects for OLE(OO40)来高效处理Oracle数据库中的大数据类型,如Long raw、BLOB、CLOB等。这种方法相比传统的ODBC中间件,具有更快的速度和更高的...
当试图存储更长的字符串时,我们通常会转向LONG类型,但即使LONG类型理论上可以存储最多2GB的数据,实践中也可能遇到限制。在上述示例中,即使字符串长度未达到2GB,仍然报错。这可能是因为PL/SQL处理LONG类型的内部...
### Oracle 数据库重点与难点总结 #### 一、Oracle 数据库进程 Oracle 数据库的运行依赖于多种进程的协作,主要包括用户进程、服务器进程和后台进程。 - **用户进程**:当用户请求连接到 Oracle 服务器时启动。它...