Oracle10g(10.2.0.1)的一个bug,将MAX/MIN函数的结果输出到一个字符变量时报错:
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小。
测试代码如:
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小。
测试代码如:
SQL>
SQL> declare
2 vStr varchar(20);
3 begin
4 select max('a') into vStr from dual;
5 end;
6 /
declare
vStr varchar(20);
begin
select max('a') into vStr from dual;
end;
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 line 5
SQL> 
这个BUG实在太明显了,在10.2.0.2中已经修复了,bug Number 4458790
| 10.2.0.2 | 4458790 + | ORA-6502 selecting MAX/MIN into a CHAR variable in PLSQL |
如果不想升级可以加to_char函数,改成如下:
SQL>
SQL> declare
2 vStr varchar(20);
3 begin
4 select to_char(max('a')) into vStr from dual;
5 end;
6 /
PL/SQL procedure successfully completed
SQL>
本文介绍Oracle10g版本10.2.0.1中使用MAX/MIN函数输出到VARCHAR变量时遇到的ORA-06502错误,并提供了解决方案。该错误已在10.2.0.2版本中修复。
1948





