Zitat Zitat von dschroeder Beitrag anzeigen
Ich habe die Lösung von Baldur zunächst auch nicht verstanden. Aber ich habe mal die KI gefragt. Die konnte es mir erklären.

Mein bisheriges Wissen war, dass man Null-Indikatoren beim Fetch angeben kann, damit das System darin mitteilen kann, ob ein gelesenes Feld NULL ist.

Was ich nicht wusste ist, dass es umgekehrt auch geht. Ich kann hinter eine Hostvariable (z.B. im where) einen Null-Indikator schreiben, um dem System damit zu sagen, dass die Hostvariable den Wert NULL hat. Das ist notwendig, wenn die Hostvariable selber nicht NULL-fähig ist.

Ich hoffe, ich habe es richtig verstanden und korrekt beschrieben.
Das wird gebraucht, um NULL values zu erzeugen.
Nehmen wir mal ein kleines, typisches Beispiel:
- im Auftragskopf steht eine Kundennummer
- für dieses Feld erlaube ich Null values
- dann lege ich eine referential constraint drauf, die schützt, dass da keine Kundennummern reinpassen, die es nicht gibt.
- füge ich einen Barverkauf ein, dann hat der keinen Kunden
- dafür brauche ich dann in manchen Programmiersprachen (RPG) eine Krücke, da null reinzuschreiben.
et voila!

Beim Vergleich (where clause) ist "where Feld = null" nicht erlaubt, das muss dann "where feld is null" heißen.
Wenn der Compiler oder die runtime das anders sieht und das nicht merkt, dann ist das nicht "schön" sondern "doof".
Wenn das jemand trotzdem benutzt, dann ist das nicht "clever", sondern "blöd", weil das nicht mehr funzt, wenn der Compiler und/oder die runtime den Fehler beheben. Dann ist auch beschweren, dass das früher doch ging, zwar einen Versuch wert, bringt aber nix.

D*B