Oracle implicit parameter casting - why doesn't it always work? (ORA-06502 error)
Interesting question - at first I would have said an overflow, but checking, that's ORA-01426 and if it wasn't a number, ORA-01722. Is it just datatype NUMBER which defaults to NUMBER(38)? 

But this can be diagnosed with a trace to see what's exactly going on. If you can identify the session, or can modify the connection code, you can do:

SQL&gt; alter session set events='6502 trace name errorstack level 12';

Session altered.

SQL&gt; create or replace function fn_add(p1 number, p2 number) return number
  2  as
  3  v1 number(1);
  4  begin
  5  v1 := p1 + p2;
  6  return v1;
  7  end;
  8  /

Function created.

SQL&gt; select fn_add('10', '1') from dual;
select fn_add('10', '1') from dual
       *
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: number precision too large


Now looking in the tracefile:

---- Error Stack Dump -----
ORA-06502: PL/SQL: numeric or value error: number precision too large
----- Current SQL Statement for this session (sql_id=a36psfjj50bpv) -----
select fn_add('10', '1') from dual


That should at least get you started on root cause analysis. But be warned that these trace files can get very large, very quickly!