[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2015
    Beiträge
    109
    hab mir den Fehler durchgelesen. Ich tippe mal auf diesen Punkt als Ursache:
    Bei einem der Eingabeparameter der Funktion ist ein Datenabgleichungsfehler aufgetreten.
    Sowas dachte ich mir zumindest,
    leider wüsste ich nicht, wie ich das korrekt übergebe.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da musst du mal in die Doku schauen, was als Feldtypen denn da so unterstützt wird.
    Alternativ musst du halt über Zeichenfelder gehen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Oct 2015
    Beiträge
    109
    Wo kann ich die Doku finden?

    Habe mir http://publib.boulder.ibm.com/iserie...mstch2data.htm
    angeschaut und dementsprechend versucht:

    Code:
       RIAUFO         numeric(11, 2) path 'Balance'
    leider funktionierte das auch nicht.

    Auch:

    Code:
           //-----------------------------------------------------------------------
           // Prozedur XML speichern
           //-----------------------------------------------------------------------
         P xmltosql        B
         D                 PI
         D file_name       S            900A
         D $$AUFO          S             13A
          /free
            exec sql set option commit=*CHG;
            exec sql declare c2 cursor for
              select info_req.*
              from xmltable('/ExCustomerDataList/Customer'
                   passing xmlparse(document get_xml_file('/home/codaho/test.xml'))
                   columns
            RIONID         varchar(20) path 'CustomerNo',
            RIANZA         varchar(5)  path 'NoOfSuccessfullOrders',
            $$AUFO         char(13   ) path 'Balance'
    
    
                           ) info_req;
    
    
    
    
            exec sql open C2;
            dou (sqlcode <> *zeros) and sqlcode <> 326;
            exec sql fetch c2 into :rionid, :rianza, :$$aufo;
              riaufo = %dec($$aufo:11:2);
              write risk00r;
            enddo;
          /end-free
    bzw. :
    Code:
     $$AUFO         varchar(13   ) path 'Balance'
    wollen mir keinen erfolgreichen Versuch zurückgeben.

  4. #4
    Registriert seit
    Oct 2015
    Beiträge
    109
    Update: musste im SQL noch auf *CHG umstellen.
    Jetzt führt er da alles korrekt aus (auch mit decimal.

    Bloß mein Programm liefert immer noch bloß eine leere Zeile, sobald ich
    Balance mit rein nehme.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Und was sagt das berühmte Joblog?

    Übrigens %DEC() verträgt nur ungern Leerzeichen. Der Feldtyp VARCHAR oder die Funktion %trim() wäre hier noch angebracht.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Oct 2015
    Beiträge
    109
    ok dankeschön!
    Anzeigervariable erforderlich
    Bin dabei jetzt auf: http://newsolutions.de/forum-systemi.../549-SQL-Error gestoßen.
    Jetzt muss ich nur noch rausfinden, wo die hingehört

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Beim Fetch benötigst du je Variable einen NULL-Anzeiger von Typ "5I 0":

    exec SQL fetch : F1 : F1Null, : F2 : F2Null, ...;

    Null-Anzeiger:
    0 = OK
    -1 = NULL
    >0 = Warnung, Inhalt gekürzt
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Oct 2015
    Beiträge
    109
    Ja tausend Dank!
    Hast mich gut durchgeführt
    funktioniert jetzt einwandfrei:
    Code:
           //-----------------------------------------------------------------------
           // Prozedur XML speichern
           //-----------------------------------------------------------------------
         P xmltosql        B
         D                 PI
         D file_name       S            900A
         D anz1            S              5I 0
         D anz2            S              5I 0
         D anz3            S              5I 0
          /free
            exec sql set option commit=*CHG;
            exec sql declare c2 cursor for
              select info_req.*
              from xmltable('/ExCustomerDataList/Customer'
                   passing xmlparse(document get_xml_file('/home/codaho/test.xml'))
                   columns
            RIONID         varchar(20)     path 'CustomerNo',
            RIANZA         varchar(5)      path 'NoOfSuccessfullOrders',
            RIAUFO         decimal(11, 2) path 'Balance'
    
    
                           ) info_req;
    
    
    
    
            exec sql open C2;
            dou (sqlcode <> *zeros) and sqlcode <> 326;
            exec sql fetch c2 into :rionid :anz1, :rianza :anz2, :riaufo :anz3;
              write risk00r;
            enddo;
          /end-free
         P                 E

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Mich würde da schon interessieren, was denn die NULL-Anzeiger mal anderes als 0 anzeigen!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Oct 2015
    Beiträge
    109
    Ja, da bau ich jetzt gerade dran.
    Dachte mir das wie folgt:
    Wenn sie nicht 0 anzeigen, wird bei der ID der Satz übersprungen,
    bei den anderen Werten werden diese jeweils mit 0 gefüllt.
    Zudem wird immer ein Protokollsatz erstellt, der die Werte der Felder + Null-Anzeiger Werte enthält.

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Indikator-Variablen bringen 0 zurück wenn kein NULL-Wert vorliegt und auch sonst alles in Ordnung ist.
    -1 wird bei NULL-Wert ausgegeben, -2 ist Data-Mapping-Error.

    NULL-Werte kann man übrigens auch umgehen (falls das gewünscht ist), in dem man im XMLTABLE einen Default-Wert angibt.

    ... FeldName DataTypeDefinition Default='WasAuchImmer' Path='' ...
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Systemwechsel: Übertragen Spoolfiles
    By programmer400 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 18-11-14, 15:22
  2. FTP Pc -> AS400 Source übertragen ?
    By Gimli in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 08-04-03, 08:54
  3. Logs von der AS/400 zum PC automatisch übertragen
    By kazamm in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 18-02-03, 08:04
  4. Wie Datei von 5.1 auf 3.7 übertragen?
    By hs in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 18-11-02, 14:44
  5. IFS-Dateien per FTP übertragen
    By mott in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 20-06-02, 10:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •