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

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. Using FastCGI to Host PHP Applications on IIS 7 -IIS7 怎么配置 PHP5

    This article describes how to configure the FastCGI module and PHP to host PHP applications on IIS 7 ...

  2. 第二百三十八天 how can I 坚持

    最近睡觉,老是梦到死亡,多么可怕啊.感觉好虚幻. spring事务管理,框架搭建. 看着没多少事,最起来感觉好多啊. 梳理下最近爬过的山,时间久了会忘,反正上周没爬,下雪了. 10月18号-香山,11 ...

  3. 利用管道实现Shell多进程

    shell中有个&,表示该程序在后台执行,其实是fork了一个子进程,跟系统调用是一样的. 在实际的操作过程中,有时需要控制后台程序的个数,毕竟启动太多的后台,会对服务的性能造成影响. 所以需 ...

  4. Spring入门(2)-通过构造器注入Bean

    Spring入门(2)-通过构造器注入Bean 前一篇文章将了最基本的spring例子,这篇文章中,介绍一下带有参数的构造函数和通过构造器注入对象引用. 0. 目录 带有参数的构造函数 通过构造器注入 ...

  5. LCD1602汉字、自定义字符取模

    用zimo221软件, 新建一个8*8的图像,留出左边3列,用右边5列点出自定义字符,选择取模方式C51,就可得到对应的编码 如下图:温度符号℃的编码

  6. UVaLive 6627 First Date (转换时间)

    题意:给定两个日期,两种不同算闰年的方法,导致日期不同,给定那个慢的,求你求了那个快的. 析:因为算闰年的方法不同,所以我们就要先从1582算到当前时间,算出差了多少天,再加上就好.注意跨月,跨年的情 ...

  7. JS与Jquery的事件委托——解决了绑定相同事件的问题

    概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完 ...

  8. [c++]this指针理解

    #include <iostream> using namespace std; /** * this 指针理解 */ class A{ int i; public: void hello ...

  9. Spring 3 整合Apache CXF WebService[转]

    http://www.cnblogs.com/hoojo/archive/2012/07/13/2590593.html 在CXF2版本中,整合Spring3发布CXF WebService就更加简单 ...

  10. 算法效果AB测试中的PV-UV不对称性

    (转载请注明原创于潘多拉盒子) 算法效果的AB测试,是指在相同的应用场景下,对比不同算法的效果.通常的做法是,按照PV或UV随机分配流量到算法上,计算算法的CTR或转化率进行对比.为了表述简单,我们假 ...