巧用分析函数解决ORA-06502--字符串缓冲区太小
来源:互联网 发布:c获取数组长度 编辑:程序博客网 时间:2024/05/16 15:43
现在有这么一个需求,业务单据上面有很多流程跟踪的信息,要显示在列表页面的一个字段中。可能出现一个问题,那就是如果合并的字段长度超过4000个字节,SQL语句会报错,ORA-06502 字符串缓冲区太小,即使你用substr()截取也是这样的错误。其实就是一个行转列的过程。那怎么解决这个问题,来做个试验:
drop table test;
create table test(
track_info_id number(10),
id number(10),
DESCR varchar2(1000)
);
insert into test values(4,100,RPAD('4',800,'4'));
insert into test values(5,100,RPAD('5',800,'5'));
insert into test values(6,100,RPAD('6',800,'6'));
insert into test values(2,100,RPAD('2',800,'2'));
insert into test values(3,100,RPAD('3',800,'3'));
insert into test values(1,100,RPAD('1',800,'1'));
commit;
1. 先判断各行的DESCR加起来是否超过4000个字节,只取没有超过4000个字节的行数。
select ID,wmsys.wm_concat(DESCR)
from (select ID,
DESCR,
sum(lengthb(DESCR||',')) over(partition by ID order by track_info_id asc) descr_length
from test)
where descr_length < 4000
group by ID;
2. 这个跟上面的区别在于,只是如果合计超过4000个字节,只取最新的几个流程。
with t as(
select * from (select ID,DESCR,track_info_id,
sum(lengthb(DESCR||','))over(partition by ID order by track_info_id desc) descr_length
from test ) where descr_length<4000)
select ID,max(DEFECTDES) from
(SELECT ID,
wmsys.wm_concat(DESCR) over(partition by ID order by track_info_id) DEFECTDES
from t) group by ID;
- 巧用分析函数解决ORA-06502--字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 错误分析
- ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小错误分析
- ORA-22835 缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- delphi ora-06502 pl sql 数字或值错误 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
- ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小解决办法
- Oracle ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- Oracle ORA-06502 数字或值错误:字符串缓冲区太小
- 生成awr报告时报ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- Oracle PlSql 问题集锦 - 数字或值错误:字符串缓冲区太小【ORA-06502】
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- 清空fragments的back stack
- ubuntu postgresql 图形化安装与配置
- openfire整合现有系统用户
- ubuntu之ssh登陆认证慢的解决办法
- 【原】JAVA实现GBK,UTF-8与中文互转。
- 巧用分析函数解决ORA-06502--字符串缓冲区太小
- 黑马程序员——一道关于String的考题引发的总结
- ORA-28000: the account is locked-的解决办法
- 【ggs错误】源端插入一次数据,目标端会插入两次
- Oracle常用内置函数介绍及用法(一)
- Android 仿网易新闻v3.5:上下滑动的引导页
- java多线程总结六:经典生产者消费者问题实现
- 浅谈C语言 extern 指针与数组
- Linux下部署多个Tomcat