Please help. I am getting ORA -06502 when i execute the following procedure:

create or replace procedure splittable is
v_symbol occ.csymbol_id%type;
v_putcall occ.cputcallcode%type;
v_strike occ.strike_price%type;
v_expire occ.expire_date%type;
v_exchange occ.exchange_code%type;
d number;
A varchar2(3);
cursor occ_cursor is
select substr(CSymbol_id,1,3),cputcallcode,strike_price,expire_date,
exchange_code
from occ
where substr(csymbol_id,1,3) is not null and strike_price is not null;
begin
delete from occ1;
open occ_cursor;
Loop
fetch occ_cursor into v_symbol,v_putcall,v_strike,
v_expire,v_exchange;
exit when occ_cursor%notfound;
d:=length(v_exchange);

for i in 1..d loop
IF substr(v_exchange,i,1)<>'0' then
A:=substr(v_exchange,i,1);
if A='1' then
A:='18';
end if;
if A='2' then
A:='14';
end if;
if A='3' then
A:='16';
end if;
if A='4' then
A:='17';
end if;
if A='8' then
A:='447';
end if;
insert into occ1 values(v_symbol,v_putcall,v_expire,A,v_strike);
end if;
end loop;


end loop;
close occ_cursor;
commit;
end;

the table occ1 is constructed as follows:
SQL> DESC OCC1
Name Null? Type
------------------------------- -------- ----
SYMBOL VARCHAR2(3)
CPUTCALLCODE CHAR(1)
EXPIRE_DATE DATE
EXCHANGE_CODE VARCHAR2(11)
STRIKE_PRICE NUMBER(16,5)