您的位置:首页 > 数据库 > Oracle

【已解决】oracle数据中,插入clob类型字段遇到的问题

2017-04-11 00:00 1236 查看
摘要: 在项目开发中,需要将xml文件内容存入到oracle数据库中,设置的字段类型为clob,在进行插入操作,发现当xml大小大于4k时,报错,String literal too long.....

varchar2 支持的最大长度为4000,当超过4000报错,查阅相关文章,提到clob类型可以存储4G大小。于是将对应表的字段设置成clob类型,clob可以直接像varchar类型一样直接插入,和读取。但是如果直接插入,默认当成varchar类型,限制长度为4000。

已有解决上述问题,使用的方法是:

declare

v_clob clob;

begin

v_clob = '需要插入的内容';

insert into t_table ('插入clob对应的字段') values(clob);

end ;

通过以上的方法,可以将内容直接插入进去了。很开心。。。。。

但是!但是!但是!重要事情说三遍, 还是遇到问题了,发现当xml文件大小>32k,会报PLS-00172,string literal too long,通过网上搜索,发现,PL SQL 支持最大长度为32k。找了n久,发现一种行之有效的方法,就是采用拼接方法(“||”),一个clob变量放置不超过32k大小内容。我的做法就是将xml文件内容分成多个clob,采用拼接"||",

declare

v_clob clob;

v_clob1 clob;

v_clob2 clob;

... ...

begin

v_clob = '< 32k 内容';

v_clob1 = '< 32k 内容';

v_clob2 = '< 32k 内容';

... ...

insert into t_table ('插入clob对应的字段') values(clob||clob1||clob2....);

end ;

对clob变量申明可以多个,赋值的时候也可由多个,在插入字段时候,使用 “||” 将上述变量拼接。

通过上述方法有效的解决了我遇到的问题,希望能够对你们有用。以上内容如有错误,欢迎指出。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle clob