最近,收到这样的异常邮件:

Error updating database.  Cause: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

查了下,应该是数据库varchar2(4000)写入的数据超过4000字节导致的,换成clob吧。

mybatis  中相应修改

mapper.xml文件中

</resultMap>
<result column="MSG_CONTENT" property="msgContent" jdbcType="CLOB" />

</resultMap>

insert操作中

#{msgContent,jdbcType=CLOB}

顺便把一些大对象的操作也看了下,DBMS_LOB维护内部lob常用操作如下

  • DBMS_LOB.write
PROCEDURE WRITE(lob_loc IN OUT BLOB,
amount IN BINARY_INTEGER,
offset IN INTEGER,
buffer IN RAW);
PROCEDURE WRITE(lob_loc IN OUT CLOB CHARACTER SET any_cs,
amount IN BINARY_INTEGER,
offset IN INTEGER,
buffer IN VARCHAR2 CHARACTER SET lob_loc%charset);

各参数的含义为:

lob_loc:要写入的LOB定位器。

amount:写入LOB中的字节数。

offset:指定开始操作的偏移量。

buffer:指定写操作的缓冲区。

示例代码:

DECLARE
lobloc CLOB;
buffer VARCHAR2();
amount NUMBER := ;
offset NUMBER := ;
BEGIN
--初始化要写入的数据
buffer := 'This is a writing example';
amount := length(buffer);
SELECT document
INTO lobloc -- 获取定位器并锁定行
FROM view_sites_info
WHERE site_id =
FOR UPDATE;
dbms_lob.write(lobloc,
amount,
,
buffer);
COMMIT;
END;
  • DBMS_LOB.read
PROCEDURE READ(lob_loc IN BLOB,
amount IN OUT BINARY_INTEGER,
offset IN INTEGER,
buffer OUT RAW);
PROCEDURE READ(lob_loc IN CLOB CHARACTER SET any_cs,
amount IN OUT BINARY_INTEGER,
offset IN INTEGER,
buffer OUT VARCHAR2 CHARACTER SET lob_loc%charset);

各参数的含义为:

lob_loc:要读取的LOB定位器。

amount:要读取的字节数。

offset:开始读取操作的偏移量。

buffer:存储读操作结果的缓冲区。

示例代码:

DECLARE
lobloc CLOB;
buffer VARCHAR2();
amount NUMBER := ;
offset NUMBER := ;
BEGIN
SELECT document
INTO lobloc --获取定位器
FROM lob_store
WHERE lob_id = ;
dbms_lob.read(lobloc,
amount,
offset,
buffer); --读取数据到缓冲区
dbms_output.put_line(buffer); --显示缓冲区中的数据
COMMIT;
END;
  • DBMS_LOB.append
PROCEDURE append(dest_lob IN OUT NOCOPY BLOB,
src_lob IN BLOB);
PROCEDURE append(dest_lob IN OUT NOCOPY CLOB CHARACTER SET any_cs,
src_lob IN CLOB CHARACTER SET dest_lob%charset);

各个参数的含义如下:

dest_lob是被源lob添加到的目标lob的定位器。

src_lob是源lob的定位器。

any_cs用来指定字符集。

  • DBMS_LOB.substr
dbms_lob.substr(
lob_loc in blob,
amount in integer := ,
offset in integer := )
return raw; dbms_lob.substr(
lob_loc in clob character set any_cs,
amount in integer := ,
offset in integer := )
return varchar2 character set lob_loc%charset;

各个参数的含义如下:
lob_loc是substr函数要操作的大型对象定位器
amount是要从大型对象中抽取的字节数
offset是指从大型对象的什么位置开始抽取数据

参考文章:

1. ORACLE 操作 CLOB 字段

oracle--clob的更多相关文章

  1. 使用EnterpriseLibrary插入Oracle CLOB数据

    转自:http://www.programgo.com/article/20022195177/       http://blog.csdn.net/ddxkjddx/article/details ...

  2. Oracle clob 操作

    --Oracle clob 操作 -- Created on 2015/4/8 by TianPing declare -- Local variables here v_clob1 Clob; v_ ...

  3. Oracle clob列union的方法(ORA-00932)

    今天在做“站内搜索”数据抽取时,为了能将多个相似的数据库表数据合并,使用了SQL中union关键字,期望将多个单独的SQL查询结果合并到一起.每个单独的SQL都能成功执行,在union合并的过程中遇到 ...

  4. oracle clob like

    create table products(  productid number(10) not null,  name varchar2(255),  description CLOB); 查询语句 ...

  5. 【转】Oracle + PHP Cookbook(php oracle clob 长度超过4000如何写入)

      在甲骨文LOB和PHP工作 由哈里Fuecks 达到4,000字节的限制?输入LOB ... 在这个"Oracle + PHP Cookbook"HowTo中,您将学习可用的L ...

  6. Java 存储和读取 oracle CLOB 类型字段的实用方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.Str ...

  7. jdbc oracle clob

    import java.io.BufferedReader; import java.io.Reader; import java.io.Writer; import java.sql.Callabl ...

  8. java oracle clob string 大字符串存储【转】

    单位用到了oracle存储string类型到数据库里的clob,上网查看资料找到解决方案.如下: public class ClobTest { static String url = "j ...

  9. 问题:oracle CLOB类型;结果:oracle中Blob和Clob类型的区别

    BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图 ...

  10. oracle Clob类型转换成String类型

    转载:https://www.cnblogs.com/itmyhome/p/4131339.html Clob类型转换成String类型 oracle中表结构如下: create table GRID ...

随机推荐

  1. nova --debug image-list

    nova --debug image-list DEBUG (session:) REQ: curl -g -i -X GET http://liberty-aio:35357/v3 -H " ...

  2. 第二百五十三、四、五天 how can I 坚持

    出去玩了几天,好累啊. 周五,坐了半天车.到了西柏坡,下午撕名牌,好疯狂啊,最终还是以有人受伤为代价结束了战斗.晚上吃蛋糕.水饺,还有面条,就是我的奖品没拿到.哎.. 周六,上午滑雪,两年没滑了,都忘 ...

  3. JDBC学习笔记(6)——获取自动生成的主键值&处理Blob&数据库事务处理

    获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: /** * 获取数据 ...

  4. Xcode 的正确打开方式——Debugging

    程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode.这篇博客就主要介绍了 Xcode 中几种能够大幅提升代码调试效率的方式. “If debuggi ...

  5. POJ 3666 Making the Grade (DP)

    题意:输入N, 然后输入N个数,求最小的改动这些数使之成非严格递增即可,要是非严格递减,反过来再求一下就可以了. 析:并不会做,知道是DP,但就是不会,菜....d[i][j]表示前 i 个数中,最大 ...

  6. CloudStack 使用生态统计

    http://shapeblue.com/

  7. status pending状态

    开发采用ssh,注解的方式,事物也application.xml配置了,但是在业务层没有使用@Transactional造成浏览器一直处于status pending状态,为什么没有使用@Transa ...

  8. 发现一个不错的十六进制编辑器-HxD

    十六进制编辑器我觉得是个必需的工具,遥想当年用文曲星的时候,Pacmanager.Ewayeditor…… 之前都在用WinHex,好用,但是是个收费软件,老用着破解版心里还是不舒服 后来发现这个名叫 ...

  9. POJ 2195 D - Going Home 费用流

    D - Going HomeTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vie ...

  10. insertion sort

    1.insertion sort #include <stdio.h> #include <time.h> #include <stdlib.h> #define ...