
Zitat von
Andreas_Prouza
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?
Bookmarks