View Full Version : *null aus Datei mit SQL lesen
Hallo *all
zum Wochenende noch ein kleines SQL Problem (V5R4)
ich muß aus einer Datei, die ab und zu NULL Werte enthält, Sätze mit SQL lesen
Bisher:
/exec Sql
+ select w1, w2, w3, w4 into :a1, :a2, :a3, :a4 from ... where ...
/end-exec
Wenn nun w3 *null ist, knallt das SQL
irgendwie ist mir was von "allownull" oder so ähnlich im Hinterkopf.
Finde ich aber nicht,
also, was muß ich machen ?
Danke
Robi
Für SQL gibts Anzeiger-Variablen (binär 5, 0)
select ...., : Feld : Anzeiger, ...
0 = vorhanden
-1 = NULL
-2 = abgeschnitten
entweder select coalesce(myNum, 0), coalesce(myAlfa, ' ')...
oder
select ... into :var1 :ind1, :var2 :ind2 ....
wobei dann die indx Variablen als b 5 0 deklariert werden
D*B
Hallo *all
zum Wochenende noch ein kleines SQL Problem (V5R4)
ich muß aus einer Datei, die ab und zu NULL Werte enthält, Sätze mit SQL lesen
Bisher:
/exec Sql
+ select w1, w2, w3, w4 into :a1, :a2, :a3, :a4 from ... where ...
/end-exec
Wenn nun w3 *null ist, knallt das SQL
irgendwie ist mir was von "allownull" oder so ähnlich im Hinterkopf.
Finde ich aber nicht,
also, was muß ich machen ?
Danke
Robi
coalesce klappt, danke
Das mit dem Indikator hab ich nicht kapiert,
select feld1, indikator1 , feld2, indikator2 into :fel1, :indi1, :fel2, :indi2
???
Wie benenne ich diesen indikator1 ? Woher weiß sql das ich das 'Feld' als Pärchen (Feld + Indikator) haben will ?
Robi
... mit Brille wär das nicht passiert...
select feld, ... into :feld :ind, ...
beim into werden pro quellfeld zwei Zielfelder (ohne Komma dazwischen) angegeben und das 2. Feld als binary 5 0 deklariert, bei Datenstruktur als Ziel wird dann einfach noch ein Array of binary 5 0 mit angegeben.
D*B
coalesce klappt, danke
Das mit dem Indikator hab ich nicht kapiert,
select feld1, indikator1 , feld2, indikator2 into :fel1, :indi1, :fel2, :indi2
???
Wie benenne ich diesen indikator1 ? Woher weiß sql das ich das 'Feld' als Pärchen (Feld + Indikator) haben will ?
Robi
coalesce klappt, danke
Das mit dem Indikator hab ich nicht kapiert,
select feld1, indikator1 , feld2, indikator2 into :fel1, :indi1, :fel2, :indi2
???
Wie benenne ich diesen indikator1 ? Woher weiß sql das ich das 'Feld' als Pärchen (Feld + Indikator) haben will ?
Robi
Beim SELECT wird nichts weiter angegeben. Aber beim FETCH. Zum Beispiel:
01 SQLFILE-REC.
COPY DDS-ALL-FORMATS OF SQLFILE.
01 SQL-IND-FILE.
02 SQLIND-FIL PIC S9999 USAGE COMP-4 OCCURS 20 TIMES.
....
DECLARE C1 CURSOR
FOR SELECT *
FROM SQLFILE
WHERE ....
FETCH NEXT FROM C1 INTO :SQLFILE:SQLIND-FI
Karsten
@D*B
stimmt nicht. Ich hab ja ne Brille!
also:
Mit sauberer Brille wär das nicht passiert.
Vielen Dank, ich hab tatsächlich nicht so genau hingesehen
@pwrdwnsys
auch dir danke
lange keine Cobol 'd-spec' s mehr gelesen.
nun hab ich's begriffen
schönes WE
Robi