This is a problem I came across while working with oracle apex. It took me a while to find the solution so I thought I would just do a quick blog for anyone who was having the same problem.
The problem occurs when using a select list in Oracle Apex that displays nulls. These select lists actually have a value of '%null%' which if you try to insert into a database gets compared to a number and produces an invalid number error.
I solved this problem by simply checking my the values of my select list for the string '%null%' and then using a null variable to do the insert instead if I found this string.
A better solution (if you have lots of select lists) is provided by Patrick Wolf here .
Hope this helps