-
es gilt immer noch:
- SQLCODE abfragen
- Joblog mit allen Details ansehen
- letzteres auch mit STRDBG, was SQL ausführlicher protokollieren lässt
interaktives SQL zeigt für Nullwerte automatisch Ersatzwerte an, beim insert geht das schief, wenn die Zieltabelle keine Nullwerte zulässt.
entweder Zieltabelle per SQL erstellen lassen:
create table as (select....) with no data usw.
oder im select die Nullwerte ersetzen
select a.xxx, coalesce(b.mynum, 0), coalesce(b.myalf, ' ')...
from mytable a left outer join anotherTable b on ...
D*B
 Zitat von Tobse77
Hallo Birgitta,
vielen Dank für die Antworten :-)
Habe den Fehler nun gefunden: Es lag daran, dass ich ein alphanumerisches Feld folgendermaßen in der Where-Bedingung abgefragt habe:
...
And Case When :igebart <> 0 Then :igebart Else vsgeba end = vsgeba
anstatt:
...
And Case When :igebart <> ' ' Then :igebart Else vsgeba end = vsgeba
Beim ersten Aufruf hat es immer funktioniert. Ab dem 2. jedoch nicht mehr. Wahrscheinlich wurde durch das erste exfmt das Feld mit *blank initialisiert und war somit unterschiedlich zu 0, wodurch die Where-Anweisung verhunzt war.
Nach dieser "klitzekleinen" Änderung funktioniert es.
Was ich allerdings immernoch nicht so ganz verstehe ist, warum es auch nach einem Beenden und Neuaufruf des Programms nicht wieder funktioniert hat ?!?
Nun habe ich allerdings noch einen weiteren Fehler gefunden :-(
Ich verknüpfe in meiner Select-Abfrage insgesamt 17 Files; eine davon 2 mal (Kunde und Verband).
Die Joins sind allesamt Left Outer Joins.
Ich habe in unserer Statistik (Aliasname: Statistik) TNr mit Suffix, die nicht im Teilestamm (Dateiname: MITEM) hinterlegt sind.
Über strsql funktioniert dies auch; in embedded SQL allerdings nicht.
Dort werden die TNr, die sich nicht im Teilestamm befinden auch nicht in meine Ausgabedatei geschrieben.
Woran kann dies liegen ??
Nachfolgend die SQL-Abfrage:
Exec SQL
Insert into VOGIO/EXVT0547
Select vsman, vsvbnr, a.ana1, a.ana2, a.acoi, a.apla, a.aort, a.astr,
vskdnr, b.ana1, b.ana2, b.acoi, b.apla, b.aort, b.astr,
vskdgr, c.tabbez, kdslbr, d.tabbez, vsvtr, e.tabbez,
vstnr, imdsc, imsts, vspgrg, f.tabbez, vsmagr, g.tabbez,
mi1v22, h.tabbez, vsmark, i.tabbez, vsmrze, j.tabbez,
vsprgr, k.tabbez, vsprug, l.tabbez, vsgebi, m.tabbez,
vsgeba, n.tabbez, mi1v19, o.tabbez,
vvimg3, vvimg2, vvimg1, vvimg0,
vviwg3, vviwg2, vviwg1, vviwg0
From VOGIO/Statistik Left Outer Join DCWD/AADRNU a
on vsvbnr = a.anum
Left Outer Join DCWD/AADRNU b
on vskdnr = b.anum
Left Outer Join VOGIO/KUNDST00
on vskdnr = kdnr
Left Outer Join VOGIO/V#TAK100 c
on vskdgr = c.tabinn
Left Outer Join VOGIO/V#TABR00 d
on kdslbr = d.tabinn
Left Outer Join VOGIO/V#TAVT00 e
on vsvtr = e.tabinn
Left Outer Join SIM400MFG/FKITMSTR
on vstnr = impn
Left Outer Join VOGIO/V#TAPU00 l
on vsprug = l.tabind
Left Outer Join VOGIO/V#TAGB00 m
on vsgebi = m.tabind
Left Outer Join VOGIO/V#TATH00 n
on vsgeba = n.tabind
Left Outer Join VOGIO/V#TALI00 o
on mi1v19 = o.tabinz
Where
Case When :ikdgr <> 0 Then :ikdgr Else vskdgr end = vskdgr
And Case When :ikdbr <> 0 Then :ikdbr Else kdslbr end = kdslbr
And Case When :ikdland <> ' ' Then :ikdland Else vsbla end = vsbla
And Case When :ivtr <> 0 Then :ivtr Else vsvtr end = vsvtr
And Case When :iverb <> 0 Then :iverb Else vsvbnr end = vsvbnr
And Case When :ikdnr <> 0 Then :ikdnr Else vskdnr end = vskdnr
And Case When :imagr <> ' ' Then :imagr Else vsmagr end
= vsmagr
And Case When :imhptgr <> ' ' Then :imhptgr Else mi1v22 end
= mi1v22
And Case When :imarkind <> ' ' Then :imarkind Else vsmark end
= vsmark
And Case When :iwg <> ' ' Then :iwg Else vsmrze end = vsmrze
And Case When :iprodgr <> ' ' Then :iprodgr Else vsprgr end
= vsprgr
And Case When :iprodugr <> ' ' Then :iprodugr Else vsprug end
= vsprug
And Case When :igebgr <> ' ' Then :igebgr Else vsgebi end = vsgebi
And Case When :igebart <> ' ' Then :igebart Else vsgeba end
= vsgeba
And Case When :iuland <> ' ' Then :iuland Else mi1v19 end = mi1v19
And Case When :ipreisgr <> ' ' Then :ipreisgr Else vspgrg end
= vspgrg
And Case When :itnr <> ' ' Then :itnr Else vstnr end = vstnr
And Case When :istatus <> ' ' Then :istatus Else imsts end
= imsts;
Mit folgendem Test über strsql bekomme ich das gewünschte Ergebnis:
select vskdnr, vstnr, mi1mnr, mi1mlb, mi1v22, a.tabbez, mi1v19,
b.tabbez
from vogio/v#vsta00
left outer join dcwd/mitem on vstnr = mi1mnr
left outer join vogio/v#tamh00 a on mi1v22 = a.tabind
left outer join vogio/v#tali00 b on mi1v19 = b.tabinz
where vskdnr = 3215 <--- bei dieser KdNr. gibt es etliche Suffix-TNr, die nun angezeigt werden
Similar Threads
-
By Squall in forum NEWSboard Programmierung
Antworten: 23
Letzter Beitrag: 18-10-06, 12:01
-
By muadeep in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 03-08-06, 13:25
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 18-06-06, 12:14
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By e_sichert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-05-06, 10:47
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