-
Problem mit Überlauf in SQL
Guten Tag zusammen
habe ein mir unverständliches Problem. Versuche mit embedded SQL in RPG folgendes durchzuführen :
C/EXEC SQL
C+ UPDATE LIB/FILE SET
C+ FELD3 = round((100/FELD2),4)*FELD1*-1
C+ WHERE FELD2> 0 AND FELD1 >0
C/END-EXEC
Felddefinition ist PACKED 17, 6
Leider ohne grossen Erfolg. Immer wieder bekomme ich den SQL0406 mit Überlauf. Im JOBLOG befinden sich die Hinweise:
-CPF5035 - Datenzuordnungsfehler - 2 Signifikante Daten abgeschnitten
Führe ich das Statement interaktiv aus, wird die Berechnung durchgeführt.
Danke für Eure Hilfe... Finde dieses Forum genial und habe bis heute die Lösung immer gefunden :-))
-
Hallo,
bevor Du irgendwas anderes versuchst, füge zunächst ein paar Blanks ein, vor allem beim ROUND-Befehl, nach dem Komma.
(Kann auch sein, dass die Anzeige hier im Forum sie verschluckt hat!)
SQL interpretiert solche die Angaben ,Zahl als Dezimalstelle und kommt damit ins schleudern.
Vielleicht war das das Problem:
PHP-Code:
C/EXEC SQL
C+ UPDATE LIB/FILE SET
C+ FELD3 = round((100/FELD2), 4) * FELD1 * -1
C+ WHERE FELD 2 > 0 AND FELD1 > 0
C/END-EXEC
-
Danke für die schnelle Antwort.... Leider kein Erfolg.
FELD3 = round((100/FELD2), 4) klappt problemlos (auch ohne Runden).
Sobald die 1. Multiplikation ins Spiel kommt erscheint der Fehler.
Mit diesen Zahlen passierts:
F1 = 2298.9
F2 = 212.5
auch diese Felder sind definiert mit Packed 17,6.
Wie bereits erwähnt, interaktiv wird alles berechnet wie gewünscht.
Haben wir eventuell ein Problem mit dem PTF Stand? Wir arbeiten mit R5V3
-
Das Problem sind auch hier die Zwischenergebnisse:
Bei "100 / Feld2" wird ggf. ein Zwischenergebnis bereits ohne NK berechnet.
Versuch es mal mit "100.000000 / Feld2".
Wenn das nicht klappt, musst du ggf. zusätzlich das Feld2 casten, da es zu viele NK's enthält: dec(feld2, 11, 2).
Auch die Multiplikation stellt ggf. ein Problem dar, da hier ein Zwischenfeld mit 12 NK's benötigt würde. Also sind auch hier mittels Cast vorher die NK's zu kürzen.
Zwischen embedded SQL und Dialog-SQL besteht leider immer ein Unterschied, da die embedded Statements ja prepared werden.
-
Wie Fuerchau sagt, liegt es daran, dass die numerischen Felder zu groß werden.
Da Du bereits auf Release V5R3M0 bist, kannst Du hast Du die Möglichkeit das Maximum der Anzahl Ziffern und Anzahl Nachkomma-Stellen von 31 auf 63 zu setzen.
Dies kann entweder im Compile-Befehl CRTSQLRPGI über die OPTION DECRESULT oder durch Einfügen eines entsprechenden SET OPTION-Statements mit der entsprechenden Auswahl.
Damit sollte es keine Probleme mehr geben.
Zusätzlich könntest Du noch das Ergebnis der Rundung entsprechend casten. (Hier z.B. auf 7,4)
PHP-Code:
C/EXEC SQL
C+ UPDATE LIB/FILE SET
C+ FELD3 = Cast(round((100/FELD2), 4) as Dec(7, 4)) * FELD1 * -1
C+ WHERE FELD 2 > 0 AND FELD1 > 0
C/END-EXEC
Birgitta
-
Herzlichen Dank euch beiden. Klappt hervorragend....
Freundliche Grüsse
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 11:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 15:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 12:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 15:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 10:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks