becuase somewhere you think you are using a number but are acdtually using a varchar (or another data type) you will have to debug it to find it. Luckily oracle tells you the line number of the procedure which is failing so you can see what query is being run