Manchmal glaube ich, ich sollte in Rente gehen.

Habe hier ein SQL-Statement das im Green Screen mit strsql sauber läuft.
Code:
     
 insert into dat007 /*11.08.20 09:29*/                       
      (D007PLKZ, D007KZ1, D007ARTNR, D007KZ2, D007FILLE1,   
       D007KZ3, D007FILLE2, D007KZ4, D007FILLE3, D007KZ5,   
       D007PREIS1, D007KZ6,                                 
       D007PREIS2, D007KZ7,                                 
       D007PREIS3, D007KZ8,                                 
       D007PREIS4, D007KZ9,                                 
       D007PRAB2,  D007KZ10,                                
       D007PRAB3,  D007KZ11,                                
       D007PRAB4)                                           
       select                                               
       CAST(case when preisliste = ' ' then ' '    
                 when preisliste = 'EH' then ' '         
                 when preisliste = '201869'  then '1000'    
                 when preisliste = '200065'  then '1001'    
                 when preisliste = '201903'  then '1002'    
                 when preisliste = '201779'  then '1003'    
                 when preisliste = '2041689' then '1004'      
                 when preisliste = '2041728' then '1005'      
                 when preisliste = '2041798' then '1006'      
                 else preisliste end                          
      AS CHAR(5) CCSID 273),                       
       ';', material, ';', ' ',                    
       ';', ' ', ';', ' ', ';',                    
       dec(EK_PR00001, 6 , 2), ';',                
       dec(EK_PR00002, 6 , 2), ';',                
       dec(EK_PR00003, 6 , 2), ';',                
       dec(EK_PR00004, 6 , 2), ';',                
       dec(replace(STAFF00001,'.',''), 4, 0), ';', 
       dec(replace(STAFF00002,'.',''), 4, 0), ';', 
       dec(replace(STAFF00003,'.',''), 4, 0)       
 from dat012
Wenn ich das selbe unter IBM i Access Client Solutions Version: 1.1.8.2 (sprich Java Version) mache, bekomme ich eine Fehlermeldung mit der ich nichts anfangen kann.

Code:
      SQL-Status: 22018
Anbietercode: -420
Nachricht:      [SQL0420] Zeichen in CAST-Argument ungültig. Ursache  . . . . :  Ein      Zeichen im Argument für die Funktion CAST war nicht korrekt.      Fehlerbeseitigung:  Die Ergebnisdatenart in eine Art ändern, die die      Zeichen im CAST-Argument erkennt, oder das Argument so ändern, dass es die      gültige Darstellung eines Werts für die Ergebnisdatenart enthält. Die      Anforderung wiederholen.
 Die      Verarbeitung wurde beendet, weil die hervorgehobene Anweisung nicht      erfolgreich ausgeführt wurde.
Wenn ich aus dem insert ein Select mache läuft der durch.
Ich habe diverse Felder mal entfernt und der Übeltäter scheint das hier zu sein: dec(EK_PR00001, 6 , 2), ';',

Verstehe ich aber nicht, weil die Werte hinterher gut aussehen und wie schon gesagt der GreenScreen nicht mosert.

Was tun außer sich im See zu ertränken?

GG 3945


Wenn ich ein Teilselect im GreenScreen laufen lasse sieht das Ergebnis so aus:

Anfang auf Zeile . . . . . .
....+....1....+....2....+...
"EK-Preis0" Funktion CAST
6,47 6,47
1,19 1,19
1,19 1,19
1,35 1,35
1,19 1,19
1,35 1,35
1,52 1,52
1,19 1,19
1,19 1,19


in Java so:
6,47 -
1,19 -


sprich er zeigt mir da schon keine korrekten Werte an.