Solved! Go to Solution.
What database? Is ArcSDE installed? What version of ArcGIS? How is the table
defined (both via a SQL interface, and by ArcGIS)? If you populate a value of
99999 in a NUMBER(5), it will be legal in Oracle, but not as a 16-bit integer.
- V
While all the other ArcSDE databases support discrete integer and floating-point types,
Oracle doesn't. They have NUMBER. Trying to place a value in excess of 2^31-1 will work
in SQL, but will cause overflow when it's bound to a 32-bit integer. The ORA-01455 error
is how you tell you've got an encoding problem.
You have two choices:
1) Knock an order of magnitude off that 8B value to put it in range, or
2) Change the column to NUMBER(11,1) and treat it as a SE_FLOAT64_TYPE.
- V
Usually that's not something that can be easily altered, especially if you just defined
the column as NUMBER. You can't reduce precision but you can increase it, so
altering from NUMBER(10) to NUMBER(10,0) or (11,1) might be possible. The
trick is getting ArcSDE (and ArcGIS) to recognize the update on a registered table.
I've never been fond of 'sdetable -o alter', though it sounds like it's more capable
now then when I last had to use it. The easiest way to handle major schema
changes is to back up the table, create a clone with CREATE TABLE ... AS SELECT...,
drop it with ArcGIS, then recreate the empty table template (with updates) and
INSERT back into it. Then you can re-register with the geodatabase and clean
up the interim copies.
- V