[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.232
    Zitat Zitat von Andreas_Prouza Beitrag anzeigen
    Genau, das commit wäre für das gesamte Programm gültig.
    Dann wäre sie Variante vom Manuel besser.
    Du kannst einfach beim Deklarieren des Cursors am Ende ein "... for Update" dranhängen.
    Dann ist der gelesene Satz gesperrt, bis du entweder ein Update oder ein Close Cursor machst.
    Vielen Dank schon mal an euch beide. Ich habe das mal ausprobiert. Aber es scheint nicht zu klappen.

    Hier mein Code:

    Code:
    exec sql declare csr1 cursor for  select * from bvsadres
       where ad_rec_id = 1000000065654 for update;
    
    
    exec sql open csr1;
    
    
    dow sqlcod = 0;
       um_msgbox('vor fetch');
       exec sql fetch next from csr1 into :ADRESSatz;
       um_msgbox('nach fetch' + ' Code ' + %char(sqlcod));
       if sqlcod <> 0;
          leave;
       endif;
    
    enddo;
    
    
    exec sql close csr1;
    um_msgbox('nach close');

    Wenn ich das Programm laufen lassen und z.B. vor oder nach dem Fetch mit DSPRCDLCK bvsadres die Satzsperren auf der Datei anschaue, werden keine Satzsperren angezeigt.

    Muss man vielleicht noch grundsätzlich irgendetwas einstellen, damit das for update wirkt oder sehe ich die Locks mit dem Bordmitteln einfach nicht?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.792
    Doch, das For Update klappt. Du kannst die auch i.d.R. unter DSPJOB => Sperren => Satzsperren sehen.
    Du solltest jedoch Commit=*CHG verwenden, was nur bei Journlisierung klappt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.232
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Doch, das For Update klappt. Du kannst die auch i.d.R. unter DSPJOB => Sperren => Satzsperren sehen.
    Du solltest jedoch Commit=*CHG verwenden, was nur bei Journlisierung klappt.
    Wir haben alle Tabellen journalisiert. Was heißt denn "Du solltest jedoch Commit=*CHG verwenden" ? Kann ich das im Code angeben oder muss ich dazu Programme mit anderen Optionen kompilieren?

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.391
    Zitat Zitat von dschroeder Beitrag anzeigen
    Wir haben alle Tabellen journalisiert. Was heißt denn "Du solltest jedoch Commit=*CHG verwenden" ? Kann ich das im Code angeben oder muss ich dazu Programme mit anderen Optionen kompilieren?
    ... schau dir mal den default von CRTSQLRPGI an (bevor irgendwelche Dilettanten den verändert haben), das ist eine Compile Option.
    Vorsicht: *CHG setzt keine Sperre beim lesen, sondern erst beim schreiben.
    doppelt Vorsicht: SQL setzt bei höherem Sperrlevel beim lesen eine shrnupd Sperre, die dann beim schreiben eskaliert wird (was zu Deadlocks führen kann), bei dem der spätere (!!!) gewinnt.
    dreifach Vorsicht: Sperrelvel serializable setzt eine Sperre auf Dateiebene, was mit Rekord Löffel zu Abbrüchen führt.

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

Similar Threads

  1. SQL - Wie bekomme ich die Genauigkeit hin?
    By Lucky662 in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 28-07-22, 09:30
  2. [JDBC] Locking/PerformanceProblem
    By LoCal in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 22-07-05, 11:15
  3. wie bekomme ich verschiedene Schriften auf 1 Seite
    By gize in forum NEWSboard Drucker
    Antworten: 6
    Letzter Beitrag: 22-02-05, 07:48
  4. Wie bekomme ich eine SAVF auf die AS400
    By Miles in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 13-10-03, 20:47
  5. Was ******SE und wo bekomme ich es??
    By Arbi in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 22-09-01, 11:13

Berechtigungen

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