oracle clob 存储大于4000字符的字符串

当通过insert语句直接插入一段文本或者html字符串试,超过4000字符时候,就会报:

ORA-01489: 字符串连接的结果过长

虽然字段是clob,足以存储,但是通过这种直接插入的时候,因为没有强制指定带插入字符串为clob类型,

oracle会把插入的字符串作为 “字符串类型”处理,由于oracle有最大字符串限制(不超过4000个字符),所以会报错。

解决思路:指定待插入字符串类型为clob,将长字符串存到clob变量中,可以使用过程或存储过程

例子:

DECLARE
 REALLYBIGTEXTSTRING CLOB := ‘待插入的海量字符串‘;
BEGIN

INSERT INTO test_table VALUES(‘test‘, REALLYBIGTEXTSTRING, ‘0‘);
end ;

commit;

这样就可以解决问题。

时间: 2025-01-02 21:18:10

oracle clob 存储大于4000字符的字符串的相关文章

探究oracle clob字段是如何存储的

clob字段存储的是文本,如果存储少于4000个字节则clob字段会和记录存放在一起,如果存储超过4000个字节,则不会与记录存放在一起.值得注意的是,这里的4000个字节并不是等同于varchar2(4000),那相当于什么呢,请看下列实验,数据库版本是10.2.0.1.0: drop table test_clob purge; create table test_clob ( id number, clob1  clob ); insert into test_clob values(1,

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

package oracle.clob; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.sql.Connection; import java.sql.DriverManager; import java

Oracle clob 操作

--Oracle clob 操作 -- Created on 2015/4/8 by TianPing declare -- Local variables here v_clob1 Clob; v_clob2 Clob; v_amount Int; --长度 v_offset Int; --偏移量 str varchar2(100); Begin --初始或清空clob变量 dbms_lob.createtemporary(v_clob1,True); dbms_lob.createtempo

字符、字符串、数组

1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串 在c语言中,将字符串作为字符数组来处理.(c++中不是)

【Java基础】Java中的char是否可以存储一个中文字符之理解字符字节以及编码集

Java中的一个char采用的是Unicode编码集,占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的. 但是在C/C++中由于采用的字符编码集是ASCII,只有一个字节,因此是没办法表示一个中文字符的. 解答了上面的浅显易懂的问题之后,下面彻底理清楚字符 字节以及编码的原理. 其实关于编码以及字节的问题,在腾讯实习生一面的时候也问到过,当时搞不懂面试官为什么会问这个问题,现在想想,这个问题还是很考验一个人的思考以及钻研深度的,而且这个问题远远比自己想象

指针和数组,字符和字符串等易混淆概念举例

指针和数组相关概念 文档不知道从哪搞的,基础知识,觉得有用的可以看看,留存. 有侵权的内容,请及时告知,谢谢! 指针和数组相关概念 ************************************************* 字符与字符串的区别:单引号字符其实就是代表ASCII码的整数,而字符串代表了无名数组起始的指针 指针与数组1:任何一个数组下标运算都等同于一个对应的指针运算:对数组只能知道数组的大小,和获得指向下标为0的指针,intcalendar[12][31];sizeof(ca

Windows核心编程之核心总结(第二章 字符和字符串处理)(2018.5.27)

学习目标 第二章是学习字符和字符串处理,为了更好理解这一章的内容,我自行添加了其他辅助性内容:存储模式(大端存储和小端存储).字符编码方案(一看就懂).以下是这一章的学习目标:1.大端存储和小端存储2.字符编码方案3.ANSI和Unicode字符.字符串,Windows自定义数据类型(为了兼容ANSI和Unicode)4.Windows的ANSI函数和Unicode函数5.C运行库的ANSI和Unicode函数6.C运行库的安全字符串函数7.C运行库的安全字符串函数(进阶版)8.字符串比较函数9

第二节 数值、字符与字符串

数值:在电脑中以二进制的方式存储的 字符:也是二进制方式在电脑上存储的,但是与数值不通,字符是以编码形式来显示的, 例如:ASC|| 码 GB2312.UTF8等 字符串:是有一个或多个字符组合起来的,编译器会默认在字符串末尾加上‘\0’(\0表示是结尾) 数值和字符比较 1.存储空间  2.意义差别 数值                       字符串 十进制:65535                     "121" 计算机中:1111 1111 1111 1111    

第四天:C基础之字符与字符串

今天老师主要是通过练习程序来讲解字符和字符串,所以这次日志也是通过分析代码来总结所学知识. 首先是复制字符 ,要注意'\0'的存在.使用循环时,一般用‘\0’进行退出判断条件. #include<stdio.h> int copy(char *n,char *m); int main() { char arr[] = {"hello"}; char brr[10]; printf("%d\n",sizeof(arr)); /* int i; for(i=