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
successfullycompleted
SQL
>
本文介绍Oracle10g(10.2.0.1)中使用MAX/MIN函数输出到字符变量时出现的ORA-06502错误,并提供了解决方案,包括升级版本或使用TO_CHAR函数。
1888

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



