Anmelden

View Full Version : SQL Parallelverarbeitung



itec01
04-04-11, 12:27
Hallo Zusammen,
ich habe ein SQL, welches mit FETCH die Sätze holt. Wie verhält es sich, wenn eine anderes Programm die nächsten Sätze verändert oder löscht?

D.h.
Anzahl der Sätze im Result = 10.

1. SQL im Programm ausgeführt
2. c+ FETCH C2 FOR 1 ROWS INTO : INPSQL

Nachdem der erste Satz gelesen wurde, habe ich den nächsten Satz mit upddta geändert. Wenn dann das SQL diesen Satz liest, dann stehen die alten Daten noch drin.

Gibt es hierzu einen anderen Befehl, damit er immer aktuell die Daten holt oder macht man dies besser mit COMMIT?

Vielen Dank.

Klaus

Fuerchau
04-04-11, 13:14
Declare cursor ...
scrollable sensitive ...

Allerdings kann die Performance darunter leiden.

itec01
04-04-11, 13:57
danke, aber hat er leider nicht gemacht. Der hat den Wert immer noch wie vor dem update.

Folgendes habe ich angegeben:

0006.00 c/EXEC SQL
0007.00 c+ DECLARE C2 SCROLL CURSOR FOR S2
0008.00 c/END-EXEC
0009.00 **
0010.00 **
0011.00 c/EXEC SQL
0012.00 c+ OPEN C2
0013.00 c/END-EXEC
0014.00 **
0015.00 **EXEC SQL
0016.00 ** WHENEVER NOT FOUND GOTO SbSQLEnd
0017.00 **END-EXEC
0018.00 c do *hival
0019.00 **
0020.00 c/EXEC SQL
0021.00 ***c+ FETCH next from C2 INTO : INPSQL
0021.01 c+ FETCH C2 FOR 1 ROWS INTO : INPSQL
0022.00 c/END-EXEC

B.Hauser
04-04-11, 14:27
Damit Du die aktualisierten Daten jeweils erhälst, muss Du einen SENSITIVEN Cursor definieren.


DECLARE C2 SENSITIVE SCROLL CURSOR FOR S2

Birgitta

itec01
04-04-11, 14:30
super, vielen Dank. Jetzt funktioniert es.

Klaus

Fuerchau
04-04-11, 14:32
Ich meine "sensitive" gesagt zu haben :-).