Gleitkommazahlen ohne Längenangabe
Informationen
- Kategorien: Kernel
- Version: 15.0.0.3585
- Veröffentlichungsdatum: Freitag, 23. März 2012
- Entwickler: Eiteljörge
- Benötigt Datenbankänderung: Nein
- Betreff: Gleitkommazahlen ohne Längenangabe sollte maximale Genauigkeit nutzen
Beschreibung
Eine Gleitkommazahl wird über ihre Genauigkeit (Precision, maximale Anzahl Ziffern vor und nach dem Komma) und die Anzahl der Stellen nach dem Komma definiert. Wenn bei der Attributdefinition mit dem Typ Gleitkommazahl das Längenfeld leer gelassen wird, dann bedeutete dies bisher 0 Stellen vor dem Komma und daher musste immer ein Wert eingetragen werden. Ein leeres Längenfeld sollte aber bedeuten, dass die maximale Anzahl Stelle verwendet wird.
Die Längenangabe wird bei einer Gleitkommazahl nur bei der Erstellung der SQL-Skripte verwendet. Damit das Längenfeld leer gelassen werden kann, wurden drei neue Platzhalter definiert, die in der dbms.ini anstelle von %SIZE% verwendet werden können/sollten:
%SIZE_MSACCESS% %SIZE_SQLSERVER% %SIZE_ORACLE%
Diese Platzhalter sind datenbankspezifisch, so z.B. ist %SIZE_ORACLE% nur für die Oracle Datenbank zu verwenden.
Wenn ein Attribut vom Typ Gleitkommazahl mit Länge = leer und Kommastellen 2 definiert ist, dann wird %SIZE% mit 0,2 und %SIZE_ORACLE% mit 38,2 ersetzt.
Die Längenangabe war bisher nur für die Oracle Datenbank relevant. Durch Verwendung des Typs Dezimal anstelle von Typ float/double ist die Längenangabe nun auch für die ACCESS und SQL Server Datenbank relevant.
Für String Typen können auch die neuen Platzhalter verwendet werden, aber es besteht praktisch kein Unterschied zu %SIZE%.
Beispielcode
dbms.ini:
[TYPEMAPPING MSACCESS]
DOUBLE=DOUBLE
DECIMAL=DECIMAL(%SIZE_MSACCESS%)
[TYPEMAPPING ORACLE]
DOUBLE=NUMBER(%SIZE_ORACLE%)
DECIMAL=NUMBER(%SIZE_ORACLE%)
[TYPEMAPPING SQLSERVER]
DOUBLE=[float](53)
DECIMAL=[decimal](%SIZE_SQLSERVER%)