码迷,mamicode.com
首页 > 其他好文 > 详细

Orcal数据类型总结

时间:2019-08-20 10:48:36      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:pre   htm   解决   HERE   varchar2   acl   变量   场景   客户   

一、Oracle中的varchar2类型

  1. 我们在Oracle数据库存储的字符数据一般是用VARCHAR2。VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同。

  2. 在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类型,最大字节长度为32767。

  3. 当 VARCHAR2 容纳不下我们需要存储的信息时,就出来的Oracle的大数据类型LOB( Large Object,大型对象)。


 

二、Oarcle中的LOB类型

  1. 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了。因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象、档案等)。

  2. LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非文本的字节流数据(如程序、图象、影音等)。

  3. 而CLOB,即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。

三、DB中使用CLOB类型字段

(一)、创建表(使用sql或者直接在PL/SQL客户端创建),字段类型CLOB

-- Create table
create table TEST_CLOB
(
  id   number,
  nmae varchar2(10),
  msg  clob
)

先看一下使用普通方式操作CLOB类型:

INSERT INTO TEST_CLOB (ID,
                       NMAE,
                       MSG) VALUES(1,111,我是大量信息描述)
select t.*from TEST_CLOB t

查询因为不是varchar2类型,所以普通查询看不到CLOB类型的字段内容,结果如下

技术图片

而上面普通插入操作也会因为Oracle的隐式转换,默认把字符串转换成varchar2类型,一旦字符串内容超过varchar2的最大限度就会报会报ora-01704(字符串太长)错误。

正确操作:

--使用PL/SQL语法,采取绑定变量的方式解决,而不是直接拼接SQL

DECLARE 
       V_LANG CLOB := 待插入的海量字符串;
       
       V_UPDATE CLOB := 更新的海量字符串;
BEGIN

  INSERT INTO TEST_CLOB t VALUES (Grand.Jon, 22, V_LANG);        --增加

  UPDATE TEST_CLOBt SET t.temp_clob = V_UPDATE WHERE rownum = 1;  --修改

  SELECT t.NAME, dbms_lob.substr(t.MSG) FROM TEST_CLOB t;    --查询  将CLOB转成字符类型

  DELETE TEST_CLOB t WHERE rownum = 1;                             --按列删除  

  COMMIT;

END;
/

技术图片

对CLOB的操作我们在存储过程中基本上使用 dbms_lob 中 substr , append , write 等方法。

dbms_lob 方法总结

1 dbms_lob.createtemporary(V_SQL,true);     --创建一个临时clob,用来存储拼接的sql
2 dbms_lob.write(v_SQL,写入信息);          --写入操作
3 dbms_lob.append(v_SQL,,);               --拼接clob
4 dbms_lob.substr(v_SQL);                   --截取clob,不传参数就是全部读取
5 dbms_lob.freetemporary(v_SQL);            --释放clob

 关于CLOB类型更多详细使用讲解参考:https://www.cnblogs.com/Grand-Jon/p/7389427.html

 

Orcal数据类型总结

标签:pre   htm   解决   HERE   varchar2   acl   变量   场景   客户   

原文地址:https://www.cnblogs.com/luzhanshi/p/11381302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!