/ / DB2 SQL Aktualizowanie wartości tabeli - sql, db2, sql-update

DB2 SQL Aktualizowanie wartości tabeli - sql, db2, sql-update

Próbuję zaktualizować wartość tabeli, która początkowo jest ustawiona na 0, pracuję z DB2. Jednak kiedy idę do wykonania SQL, pojawia się następujący błąd:

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

Rozumiem, co oznacza błąd, ale nie rozumiem, dlaczego go otrzymuję. Oto mój SQL:

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

Gdzie PŁATNOŚĆ jest zdefiniowana jako DECIMAL(8,2)

Czy ktoś mógłby mi wyjaśnić, dlaczego powyższa instrukcja UPDATE nie działa?

Odpowiedzi:

1 dla odpowiedzi № 1

Prawdopodobnie dzieje się tak, że obliczenia, które wykonujesz, gdzieś uzyskują wynik zawierający więcej niż 6 cyfr przed miejscem dziesiętnym.

Program DB2 obsłuży liczbę miejsc po przecinku większą niż liczba zdefiniowana w pliku SCALE, ale wystąpi błąd (z -406 widzisz), gdy jest więcej cyfr niż dozwolone w PRECISION określone.

Na marginesie, upewnij się, że zdajesz sobie sprawę, że DECIMAL(8,2) da ci 6 miejsc przed przecinkiem i 2 po nim.

Edytować: Myślę, że to zapytanie pokaże obrażające się wiersze:

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