[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Der Lock mit SQL geht nur mit einem Pointer. Die sauberste Lösung ist die, die D.B. beschrieben hat: Commitment Control und Journaling.
    kf

  2. #2
    Registriert seit
    Jul 2011
    Beiträge
    31
    Zitat Zitat von camouflage Beitrag anzeigen
    Der Lock mit SQL geht nur mit einem Pointer. Die sauberste Lösung ist die, die D.B. beschrieben hat: Commitment Control und Journaling.
    Hallo!

    Könntest du bitte etwas genauer erklären was du damit meinst? (bezüglich Lock und Pointer höre ich zum ersten Mal)

    Danke,
    Saman

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Hier ein kleines Beispiel

    PHP-Code:
    C/EXEC SQL 
    C
    + Declare Cursor .... 
    C+ For Update Of Field1Field2, .... FieldN 
    C
    /END-EXEC
     
    C
    /EXEC SQL Open Cursor 
    C
    /END-EXEC
     
    C
    The record gets locked with the FETCH statement 
    C
    /EXEC SQL Fetch next From Cursor 
    C
    /END-EXEC
     
    C
    * Do some processing 
    C
    * .....
     
    C/EXEC SQL Update .... 
    CSet Field1 = :XField2 = :Y, .... FieldN = :
    C
    Where Current of Cursor 
    C
    /END-EXEC
     
    C
    /EXEC SQL Close Cursor 
    C
    /END-EXEC 
    Chain/Update ist halt schon ein bisschen einfacher, wer's mag.
    kf

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Dann meinst du wohl mit Pointer eigentlich einen SQL Cursor!?!

    Ich würde das Beispiel so schreiben:
    Code:
    D tab1ds    E DS          extname(Tab1)
    /Free
     EXEC SQL Declare c1 Cursor For Select * From Tab1
       For Update;
     
     EXEC SQL Open Cursor;
     
     // The record gets locked with the FETCH statement 
     EXEC SQL Fetch Cursor Into :tab1ds;
      
     // Do some processing 
     
     EXEC SQL Update Tab1 set Row = (:tab1ds) Where Current of c1;
    
     EXEC SQL Close Cursor;
    /End-Free
    Dadurch braucht man bei Tabellenänderungen das Programm einfach nur neu erstellen lassen, wenn nötig. Und man ersparrt sich die angabe jeder Spalte.
    Und Free ersparrt auch ein paar Zeilen

    lg Andreas

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.931
    Zitat Zitat von camouflage Beitrag anzeigen
    Hier ein kleines Beispiel

    PHP-Code:
    C/EXEC SQL 
    C
    + Declare Cursor .... 
    C+ For Update Of Field1Field2, .... FieldN 
    C
    /END-EXEC
     
    C
    /EXEC SQL Open Cursor 
    C
    /END-EXEC
     
    C
    The record gets locked with the FETCH statement 
    C
    /EXEC SQL Fetch next From Cursor 
    C
    /END-EXEC
     
    C
    * Do some processing 
    C
    * .....
     
    C/EXEC SQL Update .... 
    CSet Field1 = :XField2 = :Y, .... FieldN = :
    C
    Where Current of Cursor 
    C
    /END-EXEC
     
    C
    /EXEC SQL Close Cursor 
    C
    /END-EXEC 
    Chain/Update ist halt schon ein bisschen einfacher, wer's mag.
    Das ist doch genau das, was ich zuvor vorgeschlagen habe?!

    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

Similar Threads

  1. Record Abfrage per SQL ?
    By schatte in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 28-08-09, 16:44
  2. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  3. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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