View Issue Details

IDProjectCategoryView StatusLast Update
0000478Database Workbench v4Oracle Modulepublic2013-01-22 12:34
ReporterDave Sellers Assigned ToMartijn Tonies  
Status closedResolutionfixed 
Fixed in Version4.4.0 
Summary0000478: INTEGER becomes NUMBER (floating point) but should be NUMBER(38)
DescriptionIf you edit a table structure and create a column (or alter an existing column) and set the type to Integer, DBW will produce the DDL e.g.


whether you let DBW modify the table or run that script separately, what it produces is a column of type Number (no length, scale 0) which is actually a floating point column, not an integer at all.
Steps To ReproduceSee above
Additional InformationNot sure whether the problem is Oracle which seems to accept Integer as a type in DDL and then produces something that seems (to me) to be completely different. It might be less confusing if DBW didn't offer Integer as a type as this would force the user to be more explicit about what they actually need/want.
TagsNo tags attached.
DBMS & Version


Martijn Tonies

2012-10-18 11:40

administrator   ~0000138

Hello Dave,

An Oracle NUMBER without scale is an INTEGER, Oracle accepts "Integer" as a type alias, see:
and spefically:

DBW offers this as an easy method of datatype input.

Martijn Tonies

2012-10-18 11:52

administrator   ~0000139

Oh wait, I might have misread something here, it seems INTEGER results in NUMBER without the "precision" specifier, this seems wrong indeed.

Dave Sellers

2012-10-18 12:11

reporter   ~0000140

Glad I'm not going mad. I updated about 30 oracles schemas last night only to find that Delphi application freaked with TIntegerField persistent fields now pointing at Floats...

Yes, I did test first. Well, sort of, the one I tested I manually changed the scale from 2 to 6 which fixed the original problem (don't ask why anyone would create a 2 digit wide column, it wasn't me!). Then I thought "why limit to 6, that's just a time-bomb waiting to go off in the future?" so I changed to Integer which was a time-bomb with a much shorter fuse;-)

No real harm done (apart to my nerves!) and another lesson learned.


Martijn Tonies

2012-10-18 12:14

administrator   ~0000141

Well, I'm not sure what INTEGER in Oracle gets you for a TField in Delphi. ;)

All I know is that INTEGER is the same as NUMBER(38) and DBW should show either INTEGER or NUMBER(38) if you use INTEGER.

Issue History

Date Modified Username Field Change
2012-10-18 10:45 Dave Sellers New Issue
2012-10-18 11:40 Martijn Tonies Note Added: 0000138
2012-10-18 11:40 Martijn Tonies Status new => feedback
2012-10-18 11:52 Martijn Tonies Note Added: 0000139
2012-10-18 11:58 Martijn Tonies Status feedback => confirmed
2012-10-18 11:59 Martijn Tonies Summary Column type conversion => INTEGER becomes NUMBER (floating point) but should be NUMBER(38)
2012-10-18 12:11 Dave Sellers Note Added: 0000140
2012-10-18 12:14 Martijn Tonies Note Added: 0000141
2012-10-19 10:47 Martijn Tonies Assigned To => Martijn Tonies
2012-10-19 10:47 Martijn Tonies Status confirmed => assigned
2012-10-24 11:48 Martijn Tonies Status assigned => resolved
2012-10-24 11:48 Martijn Tonies Fixed in Version => 4.3.2
2012-10-24 11:48 Martijn Tonies Resolution open => fixed
2013-01-22 12:34 Martijn Tonies Status resolved => closed