首先,以下语句是OK的:
SQL> select max('a') from dual;
MAX('A')
--------
a问题来了,以下语句居然会报错,谁能帮忙解释一下:
SQL> declare
2 v_a varchar2(100);
3 begin
4 select max('a') into v_a from dual;
5 end;
6 /
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 line 5
SQL> select max('a') from dual;
MAX('A')
--------
a问题来了,以下语句居然会报错,谁能帮忙解释一下:
SQL> declare
2 v_a varchar2(100);
3 begin
4 select max('a') into v_a from dual;
5 end;
6 /
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 line 5
但在10.2.0.5上试验,没报错
10.2.0.1.0
10.2.0.5.0如果没有版本升级计划,加个 trim 屏蔽一下吧先
create or replace procedure test(b out varchar2) is
begin
select max(t.a)
into b
from t;
end test;