oracle里long数据类型的总结.doc_第1页
oracle里long数据类型的总结.doc_第2页
oracle里long数据类型的总结.doc_第3页
oracle里long数据类型的总结.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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- HISTORY1 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- HISTORY1 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。利用oracle long类型字段,插入大文本在编写应用时,需要大量的插入大文本,但是oracle 的clob操作起来比较繁琐,应此我没有选择使用clob,而是使用了oracle以前版本中的long类型但是long类型有一些限制,在一个表中只能有一个long字段。开始的时候我直接使用insert into table1 values(a,blong)的方式插入数据库,但是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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论