[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    May 2005
    Beiträge
    103

    Question Embedded SQL - keine Daten bei 2. Aufruf

    Hallo zusammen,

    ich befülle mittels eines SQLRPGLE-Programmes per INSERT eine Datei.

    Die Select-Kriterien hierfür kann der Benutzer per DSPF bestimmen.

    Beim ersten Programmaufruf funktioniert dies auch. Sobald der Benutzer jedoch noch eine 2. Selektion vornimmt, wird die Datei zwar gelöscht, aber nicht wieder entsprechend der DSPF-Kriterien neu aufgebaut. Auch ein Beenden des Programms und wieder neu callen bringt nichts. Lediglich ein Beenden der Sitzung ermöglicht ein nächstes Insert !?!

    Muss ich hier irgendwelche Kompilieroptionen setzen (off. Datenpfade schließen etc.) ??

    Ich habe bemerkt, dass die Dateien nach Beenden des Programms noch immer offen sind. Könnte dies der Grund sein?? Wenn ich allerdings die off. Datenpfade schließe, wirkt sich das neg. auf die Performance-Vorteile für die nächste Abfrage aus, oder??

    LG, Tobias

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    - kontrolliere dein Joblog, ich tippe mal auf Cursor nicht geschlossen
    - selbstverständlich ist es Performance schädlich, wenn du Daten liest, am schnellsten sind Programme immer, wenn Sie möglichst schnell auf den Hammer rennen, bevor sie dazu kommen irgendwas zu machen, jede Funktionalität verbraucht nur Zeit, aber was mutt, dat mutt!

    D*B

    Zitat Zitat von Tobse77 Beitrag anzeigen
    Hallo zusammen,

    ich befülle mittels eines SQLRPGLE-Programmes per INSERT eine Datei.

    Die Select-Kriterien hierfür kann der Benutzer per DSPF bestimmen.

    Beim ersten Programmaufruf funktioniert dies auch. Sobald der Benutzer jedoch noch eine 2. Selektion vornimmt, wird die Datei zwar gelöscht, aber nicht wieder entsprechend der DSPF-Kriterien neu aufgebaut. Auch ein Beenden des Programms und wieder neu callen bringt nichts. Lediglich ein Beenden der Sitzung ermöglicht ein nächstes Insert !?!

    Muss ich hier irgendwelche Kompilieroptionen setzen (off. Datenpfade schließen etc.) ??

    Ich habe bemerkt, dass die Dateien nach Beenden des Programms noch immer offen sind. Könnte dies der Grund sein?? Wenn ich allerdings die off. Datenpfade schließe, wirkt sich das neg. auf die Performance-Vorteile für die nächste Abfrage aus, oder??

    LG, Tobias
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    May 2005
    Beiträge
    103
    Danke für die Antwort.

    Ich benutze keinen Cursor in meinem Programm, sonder ein Insert into.

    Müsste ich danach auch irgendetwas schließen ??

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    vielleicht kontrollierst du wirklich mal dein Joblog, oder beschreibst zumindest, was du nun wirklich treibst...

    Zitat Zitat von Tobse77 Beitrag anzeigen
    Danke für die Antwort.

    Ich benutze keinen Cursor in meinem Programm, sonder ein Insert into.

    Müsste ich danach auch irgendetwas schließen ??
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Wie wird das Programm beendet (z.B. SETON LR)? Wie wird denn der Inhalt der Datei gelöscht? Probiere einmal einen RCLRSC vor dem nächsten Aufruf.

  6. #6
    Registriert seit
    May 2005
    Beiträge
    103
    Sorry, ich dachte die Beschreibung mit Insert wäre ausreichend und von nem Cursor hab ich ja nichts erwähnt.

    Im Joblog ist absolut nichts außergewöhnliches:

    call vt0547
    Objekt EXVT0547 in VOGIO Art *FILE wurde gelöscht.
    Datei EXVT0547 in Bibliothek VOGIO erstellt.
    Teildatei EXVT0547 zu Datei EXVT0547 in VOGIO hinzugefügt.
    Objekt EXVT0547 in VOGIO Art *FILE wurde gelöscht.
    Datei EXVT0547 in Bibliothek VOGIO erstellt.
    Teildatei EXVT0547 zu Datei EXVT0547 in VOGIO hinzugefügt.
    Objekt EXVT0547 in VOGIO Art *FILE wurde gelöscht.
    Datei EXVT0547 in Bibliothek VOGIO erstellt.
    Teildatei EXVT0547 zu Datei EXVT0547 in VOGIO hinzugefügt.

  7. #7
    Registriert seit
    May 2005
    Beiträge
    103
    Zitat Zitat von Pikachu Beitrag anzeigen
    Wie wird das Programm beendet (z.B. SETON LR)? Wie wird denn der Inhalt der Datei gelöscht? Probiere einmal einen RCLRSC vor dem nächsten Aufruf.
    Hallo Pikachu.

    Ja, das PGM beende ich mit *inlr = *on;
    Ich lösche nicht nur den Inhalt der Datei, sondern per CALLP auf eine CL-Prozedur die ganze Datei und erstelle sie in selbiger wieder neu.
    Dies hat den Hintergrund, da das PGM von mehreren Usern benutzt werden soll, jedoch nur eine Ausgabe-Datei hat. Somit kann ich dem User per F-Taste die Info auf den Bildschirm werfen, wann, welcher Benutzer die Datei zuletzt erstellt hat.

    Den Befehl RCLSRC schau ich mir mal an - Danke :-)

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    wenn das Teil ILE ist, dann ist dem der LR Schnurz und mit RCLRSC kommst du da auch nicht weiter. Das mit der einen Datei und mehreren Benutzren - da zieht doch einer dem anderen das Hemd unter selbigem weg...
    was du da in dem Programm treibst ist nach wie vor nebulös da wirst du schon ein wenig mehr Code rauslassen müssen...

    Zitat Zitat von Tobse77 Beitrag anzeigen
    Hallo Pikachu.

    Ja, das PGM beende ich mit *inlr = *on;
    Ich lösche nicht nur den Inhalt der Datei, sondern per CALLP auf eine CL-Prozedur die ganze Datei und erstelle sie in selbiger wieder neu.
    Dies hat den Hintergrund, da das PGM von mehreren Usern benutzt werden soll, jedoch nur eine Ausgabe-Datei hat. Somit kann ich dem User per F-Taste die Info auf den Bildschirm werfen, wann, welcher Benutzer die Datei zuletzt erstellt hat.

    Den Befehl RCLSRC schau ich mir mal an - Danke :-)
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    fragst Du SQLCOD oder SQLSTT nach dem Insert ab?
    Wenn nicht solltest Du das auf alle Fälle machen. Anhand des SQLCODEs oder der SQLSTATUS wird angezeigt, ob das vorherige SQL-Statement ordnungsgemäß durchgeführt wurde oder auf Fehler gelaufen ist.
    Bei einem negativen SQLCOD oder einem SQLSTT bei dem die ersten beiden Stellen weder '00' noch '01' noch '02' sind liegt ein Fehler vor. Bei SQLCOD 100 oder SQLSTT '02000' wurde kein Satz mit den entsprechenden Kriterien gefunden.

    Um das Joblog zu prüfen solltest Du den Debugger anwerfen, dann werden auch die SQL-Aktionen protokolliert und können analysiert werden.

    M.E. liegt eine Lock-Situation vor, die verhindert, dass neue Datensätze geschrieben werden.

    RCLRSC bringt bei einem ILE-RPG-Programm überhaupt nichts!
    Die ODPs (Offene Daten Pfade) können allenfalls über RCLACTGRP geschlossen werden. Wenn das Programm allerdings in der Default-Aktivierungsgruppe läuft, hilft nur Job-Ende, da Default-Aktivierungsgruppen nicht von Hand geschlossen werden können.

    In Ausnahmefällen, kann man dafür sorgen, dass die ODPs immer bei Modul-Ende gelöscht werden. Dazu musst Du im Compile-Command die Option CLOSQLCSR auf *ENDMOD setzen. Für die Performance ist dies allerdings nicht besonders vorteilhaft, da bei jedem Aufruf die komplette Optimierung inclusive dem Öffnen der ODPs durchlaufen werden muss. (Es gibt also keine wiederverwendbaren ODPs!)

    Anstatt die Option im Compile-Command zu setzen kann auch ein entsprechendes SET OPTION Statement in die Quelle eingefügt werden. Pro Quelle darf (ab Release V5R4) nur ein einziges SET OPTION Statement angegeben werden und dies muss physisch in der Quelle vor allen anderen SQL-Statements angegeben werden.

    PHP-Code:
    C/Exec SQL   Set Option CLOSQLCSR = *ENDMOD
    C
    /End-Exec 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  10. #10
    Registriert seit
    May 2005
    Beiträge
    103
    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

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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 Zitat von Tobse77 Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    May 2005
    Beiträge
    103
    Hallo Dieter,

    Danke für die Antworten und die Geduld :-)

    - SQLCODE = 0
    - Joblog unter strdbg:

    2 > STRDBG PGM(VT0547) UPDPROD(*YES)
    2 > call vt0547
    Objekt EXVT0547 in VOGIO Art *FILE wurde gelöscht.
    Datei EXVT0547 in Bibliothek VOGIO erstellt.
    Teildatei EXVT0547 zu Datei EXVT0547 in VOGIO hinzugefügt.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    CONNECT für relationale Datenbank S6599E0C abgeschlossen.
    Aktuelle Verbindung besteht zur relationalen Datenbank S6599E0C.
    Löschen von STATISTIK in VOGIO beendet.
    Aliasname STATISTIK in VOGIO erstellt.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    ****: Debug-Nachrichten des Optimierungsprogramms für Abfrage werden
    gestartet.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    Temporäre Datei für Datei MITEM erstellt.
    Der Zugriffsplan der Abfrage wurde erneut erstellt.
    Auswahlfelder anderen Attributen zugeordnet.
    Alle Zugriffspfade wurden für Datei V#VSTA00 berücksichtigt.
    Zusätzliche Ursachencodes für Zugriffspfad verwendet.
    Alle Zugriffspfade wurden für Datei AADRNU berücksichtigt.
    Alle Zugriffspfade wurden für Datei AADRNU berücksichtigt.
    Alle Zugriffspfade wurden für Datei KUNDST00 berücksichtigt.
    Alle Zugriffspfade wurden für Datei FKITMSTR berücksichtigt.
    Zugriffspfad für Datei AADRNU erstellt.
    Zugriffspfad für Datei AADRNU erstellt.
    Zugriffspfad für Datei KUNDST00 erstellt.
    Zugriffspfad für Datei FKITMSTR erstellt.
    Zugriffspfad für Datei *QUERY0001 erstellt.
    Datei V#VSTA00 in Verknüpfungsposition 1 verarbeitet.
    Datei AADRNU in Verknüpfungsposition 2 verarbeitet.
    Datei AADRNU in Verknüpfungsposition 3 verarbeitet.
    Datei KUNDST00 in Verknüpfungsposition 4 verarbeitet.
    Datei V#TAK100 in Verknüpfungsposition 5 verarbeitet.
    Datei V#TABR00 in Verknüpfungsposition 6 verarbeitet.
    Datei V#TAVT00 in Verknüpfungsposition 7 verarbeitet.
    Datei FKITMSTR in Verknüpfungsposition 8 verarbeitet.
    Datei *QUERY0001 in Verknüpfungsposition 9 verarbeitet.
    Datei V#TAP100 in Verknüpfungsposition 10 verarbeitet.
    Datei V#TAMG00 in Verknüpfungsposition 11 verarbeitet.
    Datei V#TAMH00 in Verknüpfungsposition 12 verarbeitet.
    Datei V#TAMA00 in Verknüpfungsposition 13 verarbeitet.
    Datei V#TAWG00 in Verknüpfungsposition 14 verarbeitet.
    Datei V#TAPG00 in Verknüpfungsposition 15 verarbeitet.
    Datei V#TAPU00 in Verknüpfungsposition 16 verarbeitet.
    Datei V#TAGB00 in Verknüpfungsposition 17 verarbeitet.
    Datei V#TATH00 in Verknüpfungsposition 18 verarbeitet.
    Datei V#TALI00 in Verknüpfungsposition 19 verarbeitet.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    ****: Debug-Nachrichten für Abfrage werden beendet.
    ODP erstellt.
    Blockung für Abfrage.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    ****: Debug-Nachrichten des Optimierungsprogramms für Abfrage werden
    gestartet.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    ****: Debug-Nachrichten des Optimierungsprogramms für Abfrage werden
    gestartet.
    Der Zugriffsplan der Abfrage wurde erneut erstellt.
    Zugriff nach Eingangsfolge für Datei EXVT0547 verwendet.
    Abfrageoptionsdatei kann nicht abgerufen werden.
    ****: Debug-Nachrichten für Abfrage werden beendet.
    ODP erstellt.
    Datenumsetzung für Anweisung INSERT oder UPDATE erforderlich.
    ODP nicht gelöscht.
    ODP nicht gelöscht.
    6507 Zeilen in EXVT0547 in VOGIO eingefügt.
    2>> enddbg

    Die Zieldatei EXVT0547 ist in jedem Feld mit Schlüsselwort ALWNULL definiert. Genügt dies oder muss ich trotzdem mit der COALESCE-Funktion arbeiten?


    Zitat Zitat von BenderD Beitrag anzeigen
    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

Similar Threads

  1. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 12:01
  2. embedded SQL in RPG
    By muadeep in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 03-08-06, 13:25
  3. RPG mit Embedded SQL, JOIN ..
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 18-06-06, 12:14
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. Character verbinden in Embedded SQL
    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
  •