`
mowengaobo
  • 浏览: 164203 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle里long类型的总结

阅读更多
1、LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB。

2、对于超出一定长度的文本,基本只能用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 * from testlong;

ID NAME
---------- ------------------------
HISTORY
--------------------------------------------------------------------------------

1 dwh
work in foshan

2 sfg
work in guangzhou

SQL>; insert into testlong1 select * from testlong;
insert into testlong1 select * from testlong
*
ERROR 位于第 1 行:
ORA-00997: 非法使用 LONG 数据类型


SQL>; Declare
2 CURSOR bcur
3 IS SELECT id,history from testlong;
4 brec bcur%ROWTYPE;
5 BEGIN
6 insert into testlong1(id,name) select id,name from testlong;--其它类型
先插入
7 OPEN bcur;
8 LOOP
9 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 dwh
work in foshan

2 sfg
work in guangzhou
  LONG列不能出现在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。

利用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数据类型总结PPT

    以下是对Oracle数据类型的详细总结,特别是字符和二进制串类型。 首先,我们来看字符类型。Oracle提供了四种基本的字符数据类型:`CHAR`,`NCHAR`,`VARCHAR2`,以及`NVARCHAR2`。`CHAR`和`NCHAR`是固定长度的数据...

    Oracle各种数据类型的介绍,适合中高级编程开发人员

    需要注意的是,LONG类型在Oracle 12c之后的版本中已经被废弃,建议使用CLOB代替。 - **RAW**: 用于存储固定长度的二进制数据,最大长度为2000字节。 - **LONG RAW**: 用于存储可变长度的二进制数据,最大长度同样为2...

    oracle和sql数据类型

    总结来说,Oracle 和 SQL Server 数据类型在很多方面有相似之处,如字符串、数字、日期/时间、二进制数据类型,但在细节上有所差异,如长度限制、Unicode 支持和特定用途的类型(如 Oracle 的 Bfile 和 SQL Server ...

    *oracle存储过程总结*oracle存储过程总结*

    根据提供的文件信息,我们可以归纳出以下Oracle存储过程的相关知识点: ### Oracle存储过程基础概念 ...以上是基于提供的部分内容对Oracle存储过程进行的总结,包含了从基础概念到具体应用实例的全面解析。

    Oracle基本数据类型.pdf

    BLOB/CLOB**: 随着 Oracle 对大对象数据类型的支持增强,`LONG` 类型正逐步被淘汰,推荐使用 `BLOB` 或 `CLOB` 来存储大量数据。 - **NUMBER**: 这是一个非常灵活且强大的数据类型,可以处理几乎所有的数值计算需求...

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_04章_Oracle数据类型和函数.

    ### Oracle 数据类型详解 #### 4.1 Oracle 数据类型 ##### 4.1.1 概述 在深入了解Oracle数据库中的各种数据类型之前,我们首先需要明确数据类型的基本概念。数据类型是由一组具有相同特性的值及其上定义的操作...

    mysql与oracle差异总结

    MySql 中的 TEXT 等同于 Oracle 中的 LONG 函数。 13. 日期函数 MySql 中的 EXTRACT 函数可以提取日期的年、月、日等信息,而 Oracle 需要使用 TO_CHAR 函数来实现。 14. 去年同比的写法 MySql 中的 EXTRACT ...

    oracle处理的类型 oracle行排序

    总结,Oracle的数据类型丰富多样,涵盖了各种常见数据的存储需求,而行排序则是数据查询时不可或缺的一部分,帮助我们以有意义的方式展示和分析数据。理解并熟练运用这些概念对于任何Oracle数据库管理员或开发人员都...

    oracle基本数据类型存储格式浅析.pdf

    #### LONG类型 `LONG`类型用于存储较大的文本块,它可以存储最大达2GB的数据。然而,由于其维护起来比较麻烦且效率较低,现在很少被推荐使用,大多数情况下会被`CLOB`或`NCLOB`所替代。 **存储示例**: 在上面的...

    mysql和Oracle在对clob和blob字段的处理

    `LONGTEXT`和`LONGBLOB`是最接近`CLOB`和`BLOB`的数据类型,分别可存储最大4GB的字符和二进制数据。MySQL将这些大型数据存储在外存,以减少内存占用。查询`CLOB`和`BLOB`字段时,MySQL会根据需要加载部分或全部数据...

    Oracle数据类型说明

    ### Oracle 数据类型详解 #### 一、概述 Oracle 数据库提供了丰富的数据类型,这些类型能够满足各种业务场景的需求。在数据库设计中合理选择数据类型对于提高数据库性能、减少存储空间和确保数据一致性等方面都至...

    用VC访问Oracle操作大数据类型的高效方法.pdf

    总结来说,本文为使用VC开发Oracle数据库应用的人员提供了一种高效处理大数据的策略,即通过OO40组件,利用其强大的功能和高效的数据处理能力,优化大数据类型的存储和访问,以适应现代信息化时代对数据管理的需求。

    学习Oracle实用教程04章Oracle数据类型和函数.pdf

    Oracle还有RAW和LONG RAW用于存储二进制数据,LOB(Large Object)类型用于存储大量数据,如BLOB(Binary Large OBject)用于存储图像或文件,CLOB(Character Large OBject)用于存储大文本数据,以及XML TYPE用于...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    ### WebLogic 下 Oracle CLOB 类型转换解决方案 在使用 WebLogic 服务器进行应用程序开发时,尤其是在处理 Oracle 数据库中的 CLOB 类型数据时,开发者可能会遇到类型转换的问题。本文将详细介绍如何通过反射机制来...

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

    1. Long类型:Long数据类型用于存储大文本数据,如用户简历(EMP_DESCLONG)。它能存储的最大长度为2GB。然而,由于Long字段在处理大量数据时性能较低,且不支持索引,所以在现代Oracle数据库设计中,通常推荐使用...

    ORACLE 超长字符串问题的解决办法

    当试图存储更长的字符串时,我们通常会转向LONG类型,但即使LONG类型理论上可以存储最多2GB的数据,实践中也可能遇到限制。在上述示例中,即使字符串长度未达到2GB,仍然报错。这可能是因为PL/SQL处理LONG类型的内部...

    DBA对Oracle SQL编写规范的总结

    ### DBA对Oracle SQL编写规范的总结 #### 一、引言 在Oracle数据库开发过程中,遵循一套标准化的SQL编写规范对于提升代码质量、增强可读性和可维护性至关重要。本文档由一位经验丰富的数据库管理员(DBA)撰写,旨在...

Global site tag (gtag.js) - Google Analytics