我正在尝试创建以下过程
create or replace procedure format_phone (ph in out varchar2) is
begin
ph:='('||substr(ph,1,3)||
')' || substr(ph,4,6)||
'-'||substr(ph,7);
end;
/
declare
ph varchar2(11):='8006330575';
begin
format_phone(ph);
end;
/
抛出此异常:
Error starting at line 1 in command:
declare
ph varchar2(11):='8006330575';
begin
format_phone(ph);
end;
Error report:
ORA-06502: PL/SQL: خطأ رقمي أو قيمة: character string buffer too small
ORA-06512: عند "HR.FORMAT_PHONE", line 3
ORA-06512: عند line 4
06502. 00000 - "PL/SQL: numeric or value error"
答案 0 :(得分:1)
你只需要计算,当ph被定义为varchar(11)时,它已经具有10个字符的长度。
在你添加3个以上的函数中,所以10 + 3 = 13
13> 11 =>字符串缓冲区太小
如果初始字符串的长度为10
,则必须将ph定义为最小varchar(13)