/ / DB2 SQL Aggiornamento di un valore di tabella: sql, db2, sql-update

DB2 SQL Aggiornamento di un valore di tabella - sql, db2, sql-update

Sto cercando di aggiornare un valore di tabella inizialmente impostato su 0, sto lavorando con DB2. Tuttavia, quando eseguo il mio SQL ottengo il seguente errore:

DSNT408I SQLCODE = -406, ERROR:  A CALCULATED OR DERIVED NUMERIC VALUE IS NOT
WITHIN THE RANGE OF ITS OBJECT COLUMN
DSNT418I SQLSTATE   = 22003 SQLSTATE RETURN CODE

Capisco cosa significa l'errore, ma non capisco perché lo ricevo. Ecco il mio SQL:

UPDATE INTTABLE
SET PAYMENT = DECIMAL((MONTHIRATE*OMA)/(1-POWER(1+MONTHIRATE,-420)),8,2);

Dove PAYMENT è definito come DECIMAL(8,2)

Qualcuno potrebbe spiegarmi perché la dichiarazione UPDATE di cui sopra non funzionerà?

risposte:

1 per risposta № 1

Probabilmente quello che sta accadendo è che il calcolo che stai facendo da qualche parte sta ottenendo un risultato con più di 6 cifre prima della cifra decimale.

DB2 gestirà la presenza di più numeri dopo la cifra decimale di quelli definiti nel file SCALE, ma verrà visualizzato un errore (con l'estensione -406 stai vedendo) quando ci sono più cifre di quelle consentite con il PRECISION definito.

Per inciso, assicurati di capire che a DECIMAL(8,2) ti darà 6 posizioni prima del decimale e 2 dopo.

modificare: Penso che questa query ti mostrerà le righe offensive:

SELECT * FROM (
SELECT
A.*
,(MONTHIRATE*OMA)/(1-POWER(1+MONTHIRATE,-420)) AS CALC
FROM INTTABLE A
) B
WHERE CALC > 999999