DBA: Funzione toFloat su MySql
copia linkDescrizione del difetto
Le funzioni di libreria ToFloat e ToCurrency non funzionavano correttamente se si utilizzava il database MySQL. Il malfunzionamento era dovuto al fatto che tali funzioni venivano tradotte nell'espressione SQL
CAST($1 as decimal)dove $1 era il valore di cui effettuare la conversione. Su database MySQL il numero predefinito di decimali è 0 pertanto le funzioni ToFloat e ToCurrency effettuavano un arrotondamento. Ora le funzioni ToFloat e ToCurrency vengono tradotte nell'espressione SQL
CAST($1 as decimal(20,8))
Durante i test è emerso che la funzione di libreria ToCurrency non funzionava correttamente se si utilizzava il database DB2UDB. La causa era dovuta all'espressione SQL utilizzata da In.de per la conversione. La funzione ToCurrency, infatti, veniva tradotta nell'espressione SQL
DECIMAL($1)Anche su DB2UDB la funzione DECIMAL prevede un numero di decimali pari a 0. L'espressione SQL utilizzata a partire dalla versione 11.1 è
DECIMAL($1, 15, 8)
Effetti del malfunzionamento
- La funzione di libreria ToFloat effettuava l'arrotondamento se si utilizzava il database MySQL.
- La funzione di libreria ToCurrency effettuava l'arrotondamento se si utilizzavano i database MySQL o DB2UDB.
Soluzioni
Era sufficiente cambiare l'espressione delle funzioni di libreria ToFloat e ToCurrency in quelle indicate sopra.
Funzionalità interessate
L'utilizzo delle funzioni ToFloat e ToCurrency su MySQL e DB2UDB.
Note
- Malfunzionamento segnalato in questo thread del forum.
Ultima modifica: 23/03/2021 / Validità: da 11.1.4900