The Definitive Guide to Data Quality
It would be great to see the source code of your stored procedure.
I guess the problem is inside the stored procedure because the Oracle error message points to a line number inside the procedure.
A typical situation to tapp into this trap is the union or a join. If some conditions returns values and your test case does not meet these conditions it is possible to get different types from different sources. A very good example is a product number or a customer number which are often stored as varchar2 or as numeric (the same value with different types in different tables).