JAVA与ORACLE对大数据字段类型的存取

大数据字段有为CLOB,BLOB,LONG

一、CLOB(Character Large Object)
用于存储大文本
直接写insert存是存进去了,但是当超过2000字节时,仍然报错:
数字或值错误 : 字符串缓冲区太小
这是因为,存进去的时候,如果直接写在value中,自动会识别为字符串类型,正确做法应该是,先绑定一个clob类型的变量。

DECLARE
  V_LANG CLOB := :CONTENT;
BEGIN
INSERT INTO TB
    (ID,CONTENT)
  VALUES
    ('273e3ba0-0192-4a03-b84b-dae211b4c1bb',V_LANG );

取值的时候

//clob->string
Clob clobContent = rs.getClob("CONTENT");
String content = "";
if(clobContent != null){
    content = clobContent.getSubString((long)1,(int)clobContent.length());
}

二、BLOB(Binary Large Object)
常用于存储二进制文本
之前做BLOB字段的时候,直接使用下列代码,后发现还是有问题的。

  1. 插入
    使用rawtohex函数,将一个二进制构成的字符串转换为十六进制,直接用string类型传进去即可
INSERT INTO tb (....,RAWTOHEX(:CONTENT),...) .....
paraMap.put("CONTENT", model.getContent() == null ? "" : model.getContent());
  1. 取值
    使用 utl_raw.cast_to_varchar2 函数,取出来为string
SELECT utl_raw.cast_to_varchar2(d.CONTENT) as CONTENT FROM tb;

这里仍然是没有绑定变量,然后当成了varchar2类型,只能插入2000。猜想如上绑定变量即可,未实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值