[NEWSboard IBMi Forum]

Thema: SQL0407

Hybrid View

  1. #1
    Registriert seit
    Jul 2005
    Beiträge
    27

    SQL0407

    Hallo Forum,
    kann mir jemand zu o.g. SQL- Fehler helfen? Ich habe dieses Statement längere Zeit nicht benutzt. Heute wollte ich es ausführen und es funktioniert nicht mehr, bzw. es läuft nur bis zu einer bestimmten Stelle (ca. 20 Datensätze werden bearbeitet).
    Hat jemand einen Tip?

    Danke!

    update c82f/iim set iwufi='INZ' where immand=11 and iwufi=' '
    20 Zeilen in IIM in C82F aktualisiert.

    update c82f/iim a set iwufi= (select iwufi from c82f/iim b where
    a.iprod=b.iprod and a.immand<>b.immand and b.immand=1 and
    a.immand=11
    and a.i1sdb<>' ') where exists (select iwufi from
    c82f/iim b where a.iprod=b.iprod and a.immand<>b.immand and
    a.immand=11 and a.i1sdb<>' ')
    Nullwerte für Spalte oder Variable IWUFI nicht zulässig.

    Da ich vorher einen Wert in das Feld setze, wenn es *blank ist, kann es nicht leer sein.

  2. #2
    Registriert seit
    Jul 2004
    Beiträge
    60
    Hallo,

    Vielleicht haben sie in der Datei einen Satz mit unglütige zeichen wäre ja vom ersten SQL nicht upgedatet worden am besten datei mit UPDDTA dies sagt ob datensatz ungültige zeichen behinhaltet

    ich hoffe es hilft weiter

    mfg

    dd3tj

    Thibaut Foucart

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ganz einfach:
    Der Subselect des "Set" kommt zu einem anderen Ergebnis (nähmlich kein Satz) als die Where-Klausel.
    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

  4. #4
    Registriert seit
    Jul 2005
    Beiträge
    27
    Hallo,
    wenn ich den Subselekt einzeln ausführe, bekomme ich in beiden Fällen 271 Datensätze angezeigt.
    Da ja auch ein update auf ein paar Datensätze erfolgt, kann die Ergebnisliste nicht leer sein.

    => dd3tj: Unzulässige Zeichen sind nicht drin.

    Gruß
    elsing

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    update c82f/iim a set iwufi=

    (select iwufi from c82f/iim b where
    a.iprod=b.iprod and a.immand<>b.immand and b.immand=1 and
    a.immand=11 and a.i1sdb<>' ')


    where exists (select iwufi from
    c82f/iim b where a.iprod=b.iprod and a.immand<>b.immand and
    a.immand=11 and a.i1sdb<>' ')


    Der rote Select ermttelt KEINEN Satz, daher SQL0407.
    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
    Mar 2002
    Beiträge
    5.365
    Hallo,

    ' ' und null ist zweierlei und wenn ein subselect kein Ergebniis liefert, wird hier ebenfalls null zurück geliefert. Wenn ich das alles richtig lese, kann man den ersten Teil weglassen und gleich
    update ...
    set iwufi = (coalesce (select ...), 'INZ') where exists (select ...)
    machen, das nimmt dem SQL Interpreter auch jede Möglichkeit in Vogelgrippe zu verfallen.

    mfg

    Dieter Bender

    Zitat Zitat von elsing
    Hallo Forum,
    kann mir jemand zu o.g. SQL- Fehler helfen? Ich habe dieses Statement längere Zeit nicht benutzt. Heute wollte ich es ausführen und es funktioniert nicht mehr, bzw. es läuft nur bis zu einer bestimmten Stelle (ca. 20 Datensätze werden bearbeitet).
    Hat jemand einen Tip?

    Danke!

    update c82f/iim set iwufi='INZ' where immand=11 and iwufi=' '
    20 Zeilen in IIM in C82F aktualisiert.

    update c82f/iim a set iwufi= (select iwufi from c82f/iim b where
    a.iprod=b.iprod and a.immand<>b.immand and b.immand=1 and
    a.immand=11
    and a.i1sdb<>' ') where exists (select iwufi from
    c82f/iim b where a.iprod=b.iprod and a.immand<>b.immand and
    a.immand=11 and a.i1sdb<>' ')
    Nullwerte für Spalte oder Variable IWUFI nicht zulässig.

    Da ich vorher einen Wert in das Feld setze, wenn es *blank ist, kann es nicht leer sein.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Jul 2005
    Beiträge
    27
    Hallo,

    ich habe die SQL-Abfrage jetzt ein wenig geändert, jetzt geht es.

    update c82f/iim a set iwufi= (select iwufi from c82f/iim b where
    a.iprod=b.iprod and a.immand<>b.immand and b.immand=1 and a.immand=11
    and a.iwufi<>b.iwufi) where exists (select iwufi from
    c82f/iim b where a.iprod=b.iprod and a.immand<>b.immand and
    a.immand=11 and a.iwufi<>b.iwufi and b.immand=1)

    Die Sache mit dem coalesce habe ich versucht, aber nicht ans laufen gekriegt.

    Danke trotzdem!

Berechtigungen

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