I am executing a query using ODP.NET. The query selects a lot of columns from a table, including several NUMBER(4) columns.
When executing the query against a local dev 10.2 instance, all NUMBER(4) columns are returned as instances of Int16. This is OK and expected.
When executing the query against another 11.2 instance, all but the last NUMBER(4) columns are also instances of Int16, but the last one is an instance of decimal, which is currently breaking my code. I can fix the issue in my application, but the arbitrariness of it is killing me. How could this be? Is this even possible? I mean, it's the same query, same table, all columns are of the same type, yet one of them gets a different C# type in the data reader. How could this happen?
EDIT -> I am running tests. The problem happens even if I SELECT only that single column from that single table, without JOINs or UNIONs or WHERE or anything. Tried dropping the column and recreating it; same problem. Tried creating a copy of the table with the same columns, problem keeps happening. Tried creating a copy of the table with less columns, problem stopped happening. Is it possible that this happens solely because of the quantity of columns / position of the misbehaving column within the table? (The table has 77 columns and the problematic column is the last column in the table).