201021:clob类型-增改时间戳类型-Calendar类用法

一. clob是什么意思啊

1. Oarcle中的LOB类型

  1. 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了。因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象、档案等)。
  2. LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非文本的字节流数据(如程序、图象、影音等)。
  3. 而CLOB,即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。

2. DB中使用CLOB类型字段

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

-- Create table
create table TEMP
(
  name      VARCHAR2(200),
  age       NUMBER,
  temp_clob CLOB
)
tablespace INSIGHTDATA3_TS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 160K
    next 1M
    minextents 1
    maxextents unlimited
  );

增删改查

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

SELECT t.name, t.temp_clob FROM temp t; --普通查询 INSERT INTO temp t VALUES ('Grand.Jon', 22, '加入博客园的第一天');

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

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

正确操作

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

DECLARE 
       V_LANG CLOB := '待插入的海量字符串';

       V_UPDATE CLOB := '更新的海量字符串';
BEGIN

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

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

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

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

  COMMIT;

END;

3. 在存储过程中使用CLOB类型实例

在存储过程中使用CLOB类型实例参考文章

二. 数据库添加时间戳类型的数据

转为时间戳类型的数据

TO_TIMESTAMP (
    ' 2020-10-21 09:38:52:643000',
    'SYYYY-MM-DD HH24:MI:SS:FF6'
),

三. Calendar类

Calendar类参考文章

Calendar类使用参考

你可能感兴趣的:(201021:clob类型-增改时间戳类型-Calendar类用法)