社区
Oracle
帖子详情
Oracle数据库字符串长度超过4000
勇敢的老散户
2015-09-09 01:41:01
最近二次开发一个项目,项目中从数据库多表中取值,通过触发器把这些值拼凑成一个varchar2类型的字符串,发现当数据量较大时字符串长度会超过4000,会报缓冲区内存不够错误。。
想过把触发器中varchar2类型改为blob或clob类型,发现还有很多以前的程序引用着这个触发器,不能改;想从源码循环拼凑数据,运行起来效率又会很慢很慢很慢。。。
怎么才能让缓冲区内存够用,求Oracle高手指点一二
...全文
5611
5
打赏
收藏
Oracle数据库字符串长度超过4000
最近二次开发一个项目,项目中从数据库多表中取值,通过触发器把这些值拼凑成一个varchar2类型的字符串,发现当数据量较大时字符串长度会超过4000,会报缓冲区内存不够错误。。 想过把触发器中varchar2类型改为blob或clob类型,发现还有很多以前的程序引用着这个触发器,不能改;想从源码循环拼凑数据,运行起来效率又会很慢很慢很慢。。。 怎么才能让缓冲区内存够用,求Oracle高手指点一二
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_40454688
2018-11-26
打赏
举报
回复
我之前在写存储过程的时候碰到过这种情况,修改字符串的类型是不行的,因为改了类型之后虽然变量符合要求了,但sql语句的长度还是会超过4000,然后我就是将一个变量拆成三个,每个变量存500个左右的字符串,然后就解决问题了,不过这样做会导致系统性能下降,建议在交互不是太频繁的模块使用
小灰狼W
2015-09-10
打赏
举报
回复
要看触发器中怎么用,以及该值最后插入的字段的类型 错误信息应该是CHARACTER BUFFER too SMALL,只要将变量定义中的长度加大即可,pl/sql代码中的一个varchar2类型的变量,最长可以是32767 但如果该变量最终要插入到一个类型为varchar2的字段中,那么长度最长限制为4000,只能截取到4000字节以内或用clob
卖水果的net
2015-09-10
打赏
举报
回复
最好的办法,就是改成 CLOB 。 主要原因是: 你现在的长度不够用了,意味着你的业务数据是增加了(变长了),如果你要拆分成多个字段,你现原有程序,将读取不到完整的数据。
zbdzjx
2015-09-09
打赏
举报
回复
拼凑出这个字符串的用处? 要么建多个字符串,拼的时候,如果超过4000,剩余的放第2个字符串中,第2个字符串满了再放第3个字符串中……用的时候,将这几个字符串相加。
xu176032
2015-09-09
打赏
举报
回复
字符串最多长度那个是 oracle自定义的,不能改, 看你描述,可以考虑创建一个中间表,将需要查询的数据插入到中间表中,后续需要时候用的时候in一下这个中间表就可以了
Oracle
数据库
连接字符串
Oracle
数据库
拼接字符串 字符串相加是我们工作中常见的操作,那么如何才能将两个字符串或多个字符串拼接·组合为一个字符串呢? 下文将讲述
Oracle
中字符串的操作方法,如下所示: 实现思路: 方式1: 使用concat连接字符串,其缺点为:只可连接两个字符串 方式2: 使用“||”符合可以连接多个字符串 举例如下: select concat(‘百度’, ‘www.baidu.com’) from dual; select ‘baiduName:’||‘百度’||‘url:’||‘www.baidu.co
oracle
当
字符串长度
超过
4000
,无法插入clob类型中 2020-09-04
先创建一个有clob类型字段的测试表: CREATE TABLE wr_cs ( CLOB_DATA CLOB ); 试图将一个
超过
4000
长度的数据插入到clob_data中: 由于长度
超过
了
4000
而无法插入,可通过下面的方法插入: declare clobdata CLOB := '值'; BEGIN INSERT INTO 表名 (字段) values (clobdata); END; 示例,上面无法插入的数据就可以插入了: ..
oracle
中
字符串长度
计算,根据
oracle
标准计算超长字符串的长度
Oracle
数据库
使用sql语句: select lengthb('输入字符串') from dual ,来计算 字符串 所占的字节长度(比如,一个汉字3个字节),但是用这个lengthb函数时,输入字符串的长度不能
超过
4000
,这样遇到一些超长字符串就不行了,因此,需要用下面的三个vb.net函数来配合获取:PrivateFunctiongetStrLength_long(st...
关于
Oracle
数据库
varchar2字段
超过
4000
的截取处理
1.问题描述: 正式环境的旧系统使用的是
oracle
数据库
,某表remarks备注字段最大长度是varchar2(
4000
),编码格式为UTF-8,可以存取
4000
字符和1333个中文字符串。上游系统推送的数据中,remarks的字符长度虽不
超过
4000
字,但包含了中文字符,
超过
了
4000
,导致入库失败。经讨论过后,对不重要的字符进行截取入库处理。 2.解决方案: 截取超出的部分 if (StringUtils.lengthOfUTF8(obj.getRemarks()) >=
4000
) {
oracle
字符
超过
4000
的处理方法,
Oracle
插入/更新CLOB字段报ORA-01704:字符串文字太长
oracle
字符
超过
4000
的处理方法,
Oracle
插入/更新CLOB字段报ORA-01704:字符串文字太长
Oracle
17,086
社区成员
55,238
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章