[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jul 2012
    Beiträge
    12
    Damit könnte es zu tun haben.

    Mein SQL sieht aus wie folgt:

    EXEC SQL Prepare S1 from : mstfSqlStm ;
    EXEC SQL Declare C1 Cursor for S1 ;
    EXEC SQL Open C1 ;

    DoU SqlCod <> 0 ;
    EXEC SQL Fetch c1 into : mstfSqlData ;
    If SqlCod < 0 ;
    Iter ;
    Endif ;
    If SqlCod = 100 ;
    Leave ;
    Endif ;
    // hier: Fill Subfile ...
    Enddo ;

    EXEC SQL
    Close C1 ;

    Aus der Subfile wird danach entsprechend ein Datensatz zur Bearbeitung ausgewählt, z.B. ein Update, das über ein Serviceprogramm erfolgt, in dem die Datei in den F-Bestimmungen so definiert ist:
    FDatei UF A E Disk UsrOpn Commit(mblnCmtCtl),
    d.h. optional mit Commit-Steuerung.
    Dieser Schalter ist in meinem Fall aber auf aus gesetzt und ein Update erfolgt auch auf dem Satz.
    Lt. Debugger komme ich aus diesem Serviceprogramm daher OHNE Sperre wieder heraus und erst das dann folgende erneute Einlesen der Subfile per SQL setzt dann die Sperre, die durch das Close nicht mehr aufgehoben wird.

    Hast Du hierzu eine Idee, ob da die Ursache liegt?

  2. #2
    Registriert seit
    Jul 2012
    Beiträge
    12
    Ohje, mea culpa.

    Zwar ist es tatsächlich so, dass bei der ersten Ausführung der ODP wieder gelöscht wird und beim zweiten Mal nicht mehr und das "Satzsperren" (read) stehen bleiben, aber das hat nicht mein Problem verursacht, dass ich danach keine Löschoperation auf dem Satz ausführen konnte, sondern der Fehler lag in der delete-Funktion an sich.

    Vielen Dank für die Bemühungen und sorry für die "Fehlanfrage"!

    Claudia

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Nur noch zum Verständnis. Der ODP KANN und DARF nicht vom Benutzer/PGM gelöscht werden. Das macht die DB2 von sich aus!

    Ein offener ODP setzt auch keine Satzsperren!

    Der ODP wird von der DB2 aufgehoben, um Abfragen beschleunigen zu können. Auch wenn der ODP nicht gelöscht wird, werden beim nächsten OPEN dennoch die aktuellen Daten gelesen (auch ohne Sesitive).

    Einzig in der QAQQINI kann definiert werden wieviele ODPs maximal pro Job erhalten bleiben dürfen.

    lg Andreas

Similar Threads

  1. Embedded SQL - Löschen über mehrere Dateien
    By VAHLE in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 15-05-08, 13:59
  2. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  3. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. doppelte Sätze löschen mit SQL
    By hs in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 22-11-04, 10:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •