ich unterstelle mal, dass artikel und opcode die Sortierfelder sind:
select *
from mytable m
where m.artikel = :myArtikel
and m.opcode >= (select max(opcode)
from mytable i
where i.artikel = :myArtikel
and i.opcode < :myOpcode)
damit machst du deinen Cursor
und mit einem Blockfetch (falls du nur lesen willst) liest du 3 Zeilen davon ein und fertig.
Vorsicht: das vorliegende Design ist Waffenschein pflichtig!!! Wenn da gleichzeitig Einfügungen versucht werden gehts in den Ofen.

D*B

Zitat Zitat von PeterS Beitrag anzeigen
Vielen Dank für die schnellen Antworten.

Leider bin ich kein SQL-Experte. IBM verweist mich leider nur auf diverse Handbücher und Redbooks, in denen zwar viele Beispiele stehen, die aber nicht so ganz mein Problem darstellen.

Es ist so, das ein Web-Programm Datensätze in diverse Dateien schreibt. Hier ist das Problem, dass die Datensätze nicht unbedingt chronologisch gemeldet werden. Die drei wichtigsten Felder sind eine Artikelnummer, ein Reparaturdatum und ein Operationscode. Für eine Artikelnummer können halt mehrere Operationscodes mit unterschiedlichem oder auch gleichem Reparaturdatum aber unterschiedlichen Operationscodes gemeldet werden:

Satz1: Datum 23.05.07 O-Code S000
Satz2: Datum 02.12.08 O-Code S015
Satz3: Datum 02.12.08 O-Code S045

Dies ist die Reihenfolge, die ich per SQL ermittel. Satz2 ist als letzter gemeldet worden und muss jetzt mit dem Inhalt anderer Felder aus der Datei mit dem vorherigen und dem nachfolgendem Satz verglichen werden. Per Parameter, weiß ich, dass es sich um den Satz2 geht, normalerweise würde ich halt ein CHAIN auf den Satz2 machen, dann einmal READE und einmal READPE.
Ich hoffe, ich habe es verständlich ausgedrückt.