Oracle10g(10.2.0.1)的一个bug

Oracle10g(10.2.0.1)的一个bug,将MAX/MIN函数的结果输出到一个字符变量时报错:
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 successfullycompleted

SQL
>

你可能感兴趣的:(sql)