/ / DB2 SQL तालिका मान अपडेट कर रहा है - sql, db2, sql-update

DB2 SQL एक टेबल वैल्यू अपडेट कर रहा है - sql, db2, sql-update

मैं एक तालिका मान को अद्यतन करने का प्रयास कर रहा हूं जो प्रारंभ में 0 पर सेट है, मैं डीबी 2 के साथ काम कर रहा हूं। हालांकि, जब मैं अपने एसक्यूएल को निष्पादित करने जाता हूं तो मुझे निम्न त्रुटि मिलती है:

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

मैं समझता हूं कि त्रुटि का क्या अर्थ है, लेकिन मुझे समझ में नहीं आता कि मुझे यह क्यों मिल रहा है। यहाँ मेरी एसक्यूएल है:

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

जहां भुगतान को परिभाषित किया गया है DECIMAL(8,2)

क्या कोई कृपया मुझे समझा सकता है कि उपरोक्त अद्यतन विवरण क्यों काम नहीं करेगा?

उत्तर:

उत्तर № 1 के लिए 1

शायद जो हो रहा है वह यह है कि आप जो गणना कर रहे हैं वह कहीं न कहीं दशमलव स्थान से पहले 6 अंकों से अधिक का परिणाम प्राप्त कर रहा है।

DB2 दशमलव स्थान के बाद आपके द्वारा परिभाषित की गई संख्या से अधिक संख्या को संभालेगा SCALE, लेकिन यह त्रुटि होगी (के साथ) -406 आप देख रहे हैं) जब अनुमति से अधिक अंक हैं PRECISION परिभाषित।

एक तरफ के रूप में, सुनिश्चित करें कि आप यह महसूस करते हैं कि DECIMAL(8,2) आपको दशमलव से पहले 6 और बाद में 2 स्थान देगा।

संपादित करें: मुझे लगता है कि यह प्रश्न आपको आपत्तिजनक पंक्ति (पंक्तियाँ) दिखाएगा:

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