-
Nullwerte für Spalte oder Variable nicht zulässig.
Hallo,
bekomme bei dieser Sqlabfrage die Meldung:Nullwerte für Spalte oder Variable nicht zulässig.
Code:
INSERT INTO QTEMP/$FILE (P1FIR, P1KST, P2ZLM, P2ADM, P2TKM,
P2LFD#)
SELECT XX.F1ABT, XX.F1KST, XX.ZUDAT, XX.ABDAT, XX.ZUTKM, 0
AS Nummer FROM ZGNP XX WHERE NOT EXISTS( SELECT * FROM $FILE
YY WHERE XX.F1ABT= YY.P1FIR AND XX.F1KST = YY.P1KST) AND
(XX.ZUDAT <> 0 AND substr(digits(XX.ZUDAT), 1, 6) <= 201210 ) AND
substr(digits(XX.ABDAT), 1, 6) >= 201210 ORDER BY F1ABT, F1KST,
ZUDAT
Das untere Statement mit dem Select wird korrekt angezeigt:
Code:
SELECT XX.F1ABT, XX.F1KST, XX.ZUDAT, XX.ABDAT, XX.ZUTKM, 0
AS Nummer FROM ZGNP XX WHERE NOT EXISTS( SELECT * FROM $FILE
YY WHERE XX.F1ABT= YY.P1FIR AND XX.F1KST = YY.P1KST) AND
(XX.ZUDAT <> 0 AND substr(digits(XX.ZUDAT), 1, 6) <= 201210 ) AND
substr(digits(XX.ABDAT), 1, 6) >= 201210 ORDER BY F1ABT, F1KST,
ZUDAT
Die Felder im Insert sind ident mit denen des Select.
Wo liegt hier der Fehler begraben?
Gruß
Tarki
-
Was man halt bei der Selectausgabe ggf. nicht sofort erkennen kann ist das Vorkommen von NULL.
Dies wird in der Ausgabe dann durch " - " dargestellt.
Per DSPFFD kannst du prüfen, ob auf einem der Quellfelder ALWNULL definiert ist, in diesem Fall gibt es 2 Möglichkeiren:
- definiere in deiner Zieltabelle das feld ebenso als ALWNULL
- mach einen select ... coalesce(Feld, Defaultkonstante) ...
-
Ggf. bei den Spalten der SELECT-Abfrage mit VALUE arbeiten. Das hat den Vorteil, das wenn eine Spalte NULL enthält, dieses einen sauberen Wert zurück gibt.
SELECT VALUE(SPALTE1, 0) ....
Enthält das Feld Spalte1 NULL wird die 0 zurückgegeben.
-
 Zitat von Fuerchau
Was man halt bei der Selectausgabe ggf. nicht sofort erkennen kann ist das Vorkommen von NULL.
Dies wird in der Ausgabe dann durch " - " dargestellt.
Per DSPFFD kannst du prüfen, ob auf einem der Quellfelder ALWNULL definiert ist, in diesem Fall gibt es 2 Möglichkeiren:
- definiere in deiner Zieltabelle das feld ebenso als ALWNULL
- mach einen select ... coalesce(Feld, Defaultkonstante) ...
Muss ich das beim 1. Select oder 2. Select coalesce angeben?
-
 Zitat von ExAzubi
Ggf. bei den Spalten der SELECT-Abfrage mit VALUE arbeiten. Das hat den Vorteil, das wenn eine Spalte NULL enthält, dieses einen sauberen Wert zurück gibt.
SELECT VALUE(SPALTE1, "leer") ....
Enthält das Feld Spalte1 NULL wird der String leer zurückgegeben.
Worin glaubst Du liegt wohl der Unterschied zwischen COALESCE, IFNULL und VALUE???
Birgitta
-
 Zitat von tarkusch
Muss ich das beim 1. Select oder 2. Select coalesce angeben?
Beim 1. Select, denn von diesem werden die Werte der Spalten in die Tabelle geschrieben.
Die Spalten aus dem 2. Select (vom NOT EXISTS...) werden für die weitere Verarbeitung nicht verwendet.
lg Andreas
-
 Zitat von tarkusch
Muss ich das beim 1. Select oder 2. Select coalesce angeben?
... im 1., d.h. bei der Auflistung der Felder, da deren Inhalt in die Ziel-Tabelle geschrieben wird. Der Select im NOT EXISTS wird nur zur Prüfung verwendet.
Birgitta
-
Beim Select den du im Insert verwendest.
VALUE ist eine IBM-spezifische funktion die durch SQL-Standard dann als COALESCE definiert wurde.
VALUE und COALESCE erlauben mehrere Werte, IFNULL erlaubt nur genau 2 Werte und ist auch erst durch eine spätere SQL-Norm dazugekommen.
-
... das würde ich mal bleiben lassen, mit lockerer Hand die sauberen Nullvalues durch Schmuddelwerte, egal welcher Art zu ersetzen, da kann Quark bei rauskommen!!! Das hat ja vielleicht einen Grund, warum da Nullwerte zugelassen sind!!!
D*B
-
Naja, manchmal auch nur aus Unkenntnis .
-
@Baldur: da ist meine Erfahrung eher umgekehrt, es wird aus Unkenntnis auf Null values verzichtet!
-
Mensch, Mensch,
ist ja mehr probieren als progamieren 
jetzt habe ich alle erdenklichen Varianten coalesce und Value ausprobiert, aber die Meldung ist immer die gleiche geblieben.
Wenn ich das Select-Teil ausführe bekomme ich die Daten ganz normal und korrekt angezeigt.
In den Felder sind keine Sonderzeichen enthalten, die irgendwie auf korrupte Daten hinweisen würden.
Kann das vielleicht daran liegen das P1KST 4 0 ist und F1KST 3 0 ?
Lustiger weise funktioniert das kopierte Statement im Ile-Pgm aber nicht in der Direkteingabe im Sql.
Schätze das ich nächste Woche einen Work around machen muss.
Gut Nacht
Tarki
Similar Threads
-
By rguenzel in forum NEWSboard Drucker
Antworten: 5
Letzter Beitrag: 18-01-07, 13:38
-
By stoerfang in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 28-11-06, 14:32
-
By Xanas in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 28-08-06, 12:21
-
By TARASIK in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-08-06, 10:09
-
By cheffe1008 in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 16-05-06, 07:45
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