Oracle10g(10.2.0.1)的一个bug,将MAX/MIN函数的结果输出到一个字符变量时报错:
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小。
测试代码如:
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小。
测试代码如:
SQL>
SQL>declare
2vStrvarchar(20);
3begin
4selectmax('a')intovStrfromdual;
5end;
6/
declare
vStrvarchar(20);
begin
selectmax('a')intovStrfromdual;
end;
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
ORA-06512:在line5
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
2vStrvarchar(20);
3begin
4selectto_char(max('a'))intovStrfromdual;
5end;
6/
PL/SQLproceduresuccessfullycompleted
SQL>
1696

被折叠的 条评论
为什么被折叠?



