[NEWSboard IBMi Forum]
Seite 3 von 3 Erste ... 2 3

Thema: NULL und Case

  1. #25
    Registriert seit
    Oct 2003
    Beiträge
    117
    Zitat Zitat von Pikachu Beitrag anzeigen
    Funktioniert denn das?

    update tabelle set spalte =
    case 1 when 1 then NULL else NULL end
    Wird abgeblockt mit "Mindestens ein Ergebnis in CASE-Ausdruck darf nicht NULL sein".

  2. #26
    Registriert seit
    Oct 2003
    Beiträge
    117
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Ich habe jetzt dein Beispiel in ein SQLRPGLE-Code gepackt, eine entsprechende Tabelle erstellt und befüllt und mal getest.
    Das Programm macht das was erwartet wird.

    Code:
    /Free
     Exec Sql SET OPTION COMMIT=*NONE, CLOSQLCSR=*ENDMOD,
                         ALWBLK=*ALLREAD, ALWCPYDTA=*YES,
                         SRTSEQ=*HEX, DLYPRP=*YES;
    
     exec  sql update pranlib/t1
              set such = case 1 when 1 then NULL else 'xxx' end
              where nr = 2000;
     *inlr = *on;
     return;
    /End-Free
    V6R1
    Können wir die Maschinen tauschen?

    Was passiert, wenn Du das sql-statement interaktiv ausführst?

  3. #27
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Allrounder Beitrag anzeigen
    Können wir die Maschinen tauschen?
    Derzeit wohl eher nicht

    Zitat Zitat von Allrounder Beitrag anzeigen
    Was passiert, wenn Du das sql-statement interaktiv ausführst
    Das gleiche Ergebnis.

  4. #28
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Versuch mal folgendes:
    Code:
     /Free
       Exec SQL
           update tabelle 
              set spalte = NULLIF(:hostvar, '');
    oder

    Code:
    D HostVarInd      S            5I 0
     /Free
        If HostVar <= ' ';
           HostVarInd = -1;
        Else;
           HostVarInd = *Zeros;
        EndIf;
    
        Exec SQL Update Table
                    Set Spalte = :HostVar :HostVarInd;
     /End-Free
    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

  5. #29
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann würde ich mal doch eine Fehlermeldung an IBM abgeben.

    Ggf. vorher noch PTF's prüfen und ggf. einspielen oder mal das Problem mit einer anderen, neu erstellten Tabelle ausprobieren.

    PS:
    Das mit dem NULL-Anzeiger wurde ja abgelehnt .
    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. #30
    Registriert seit
    Oct 2003
    Beiträge
    117
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Versuch mal folgendes:
    Code:
     /Free
       Exec SQL
           update tabelle 
              set spalte = NULLIF(:hostvar, '');
    Das war einer meiner ersten Versuche. Hab's trotzdem noch einmal versucht, aber leider das gleiche Ergebnis.

    Zitat Zitat von B.Hauser Beitrag anzeigen

    Code:
    D HostVarInd      S            5I 0
     /Free
        If HostVar <= ' ';
           HostVarInd = -1;
        Else;
           HostVarInd = *Zeros;
        EndIf;
    
        Exec SQL Update Table
                    Set Spalte = :HostVar :HostVarInd;
     /End-Free
    Auch das hat leider nicht funktioniert. Gleicher Effekt: Keine Meldung im Joblog, sqlcod 0, sqlstate 0, update erfolgreich, aber eben kein NULL in der Spalte

    Wir haben auch etliche Serviceprogramme mit der gleichen Technik: ein update mit NULL innerhalb einer case-Anweisung in embedded sql, ohne NULL-Anzeiger. Da funktioniert es.
    Ein Unterschied zu der aktuellen Tabelle können wir nicht feststellen.

    Der Fehler tritt übrigens auf zwei unterschiedlichen i5 auf.

    Wir (meine Kollegen und ich) sind jetzt mit unserem Latein am Ende und haben uns für zwei update-anweisungen in einer if/else-block entschieden, eine schreibt NULL direkt, die andere schreibt die Hostvariable.

    Nicht schön, aber selten

    Danke an alle für die Antworten!

    @Fuerchau: Wir hätten sogar die NULL-Anzeiger eingebaut. ^^

  7. #31
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  8. #32
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ist auf jeden Fall eine Meldung an IBM wert.
    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

  9. #33
    Registriert seit
    Oct 2003
    Beiträge
    117
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Welches Release habt ihr denn?
    V6R1

    ... und jetzt noch etwas Text, damit ich die 20 Zeichen Minimum erreiche.

  10. #34
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wie gesagt, eine Meldung an IBM wäre empfehlenswert.

    Mein Kunde hat jetzt auch nach ca. 6 Wochen ein PTF für V6R1 bekommen, da eine Sortierung auf ein Ergebnisfeld einer CTE ignoriert wurde.
    Jetzt funktionierts endlich.

    Soweit ich mitbekommen habe gibts die CQE ab V6R1 ja nicht mehr.
    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

  11. #35
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Soweit ich mitbekommen habe gibts die CQE ab V6R1 ja nicht mehr.
    Erst ab 7.1.

    ... und jetzt auch noch etwas mehr Text zum Posten

  12. #36
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Im IBM i 7.1 Information Center wird die CQE aber immer noch erwähnt.

Similar Threads

  1. dynamisches Group by funktioniert nicht
    By Tobse77 in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 24-09-09, 08:31
  2. Darstellung der Null im LPEX-Editor (WDSC)
    By Ewald in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 25-01-07, 07:52
  3. Subselect in case when auf DB2/400
    By Flo4711 in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 29-09-06, 17:31
  4. NOT NULL WITH DEFAULT
    By deni87991 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 04-08-06, 10:32
  5. Cobol-Programm mit Embedded SQL (SELECT CASE)
    By klausgkv in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 08-06-06, 13:47

Berechtigungen

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