oracle--clob
最近,收到这样的异常邮件:
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是指从大型对象的什么位置开始抽取数据
参考文章:
oracle--clob的更多相关文章
- 使用EnterpriseLibrary插入Oracle CLOB数据
转自:http://www.programgo.com/article/20022195177/ http://blog.csdn.net/ddxkjddx/article/details ...
- Oracle clob 操作
--Oracle clob 操作 -- Created on 2015/4/8 by TianPing declare -- Local variables here v_clob1 Clob; v_ ...
- Oracle clob列union的方法(ORA-00932)
今天在做“站内搜索”数据抽取时,为了能将多个相似的数据库表数据合并,使用了SQL中union关键字,期望将多个单独的SQL查询结果合并到一起.每个单独的SQL都能成功执行,在union合并的过程中遇到 ...
- oracle clob like
create table products( productid number(10) not null, name varchar2(255), description CLOB); 查询语句 ...
- 【转】Oracle + PHP Cookbook(php oracle clob 长度超过4000如何写入)
在甲骨文LOB和PHP工作 由哈里Fuecks 达到4,000字节的限制?输入LOB ... 在这个"Oracle + PHP Cookbook"HowTo中,您将学习可用的L ...
- Java 存储和读取 oracle CLOB 类型字段的实用方法
import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.Str ...
- jdbc oracle clob
import java.io.BufferedReader; import java.io.Reader; import java.io.Writer; import java.sql.Callabl ...
- java oracle clob string 大字符串存储【转】
单位用到了oracle存储string类型到数据库里的clob,上网查看资料找到解决方案.如下: public class ClobTest { static String url = "j ...
- 问题:oracle CLOB类型;结果:oracle中Blob和Clob类型的区别
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图 ...
- oracle Clob类型转换成String类型
转载:https://www.cnblogs.com/itmyhome/p/4131339.html Clob类型转换成String类型 oracle中表结构如下: create table GRID ...
随机推荐
- 编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异
编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异 题目挺绕口的.C++ 11的好东西不算太多,但变参模板(Variadic Template)肯定是其中耀眼的一 ...
- 成都Uber优步司机奖励政策(3月5日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Web Service学习之一:Web Service原理
一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...
- 通过源码学Java基础:InputStream、OutputStream、FileInputStream和FileOutputStream
1. InputStream 1.1 说明 InputStream是一个抽象类,具体来讲: This abstract class is the superclass of all classes r ...
- MySQL索引的创建,查看,删除
在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引. 1.ALTER TABLE ALTER TABLE用来创建普通索引.UN ...
- C#操作Excel的OLEDB方式与COM方式比较
2013-03-15 13:42:54 作者:有理想的码农 在对Excel进行读写操作时,使用微软自身提供的解决方案,有两种(第三方方式除外),分别是OLEDB方式和调用COM组件的方式 ...
- 字符串匹配 - KMP算法
#include<cstdio> #include<cstring> #include<cstdlib> void GetNext(char *t,int *nex ...
- contiki makefile框架分析 < contiki学习之一 >
在linux下的工程编译,基本都可以使用makefile这个工具来完成.Contiki OS亦如此,下面分析contiki整个Makefile的框架,对makefile的具体内容暂不做分析.本文依赖于 ...
- 配置DNS服务器IP
#############################脚本功能及说明#################### #该脚本用来在本地服务器上配置DNS服务器IP #创建时间:2014-10-22 ## ...
- C# 创建移动应用
打开VS2013 选择ASP.NET MVC4Web应用程序,点击[确定] 选择[移动应用程序]点击[确定],运行之后显示的效果如图