Embedded SQL arbeitet NICHT (direkt) mit Pointern!
Was Du brauchst ist ein Cursor, der mit dem SQL-Befehl DECLARE CURSOR definiert wird und auf einem SQL-Statement basiert (Äquivalent zu der F-Bestimmung). Die Von- und Bis-Werte können als Host-Variablen (mit führendem Doppel-Punkt) direkt in das SELECT-Statement eingebunden werden.
Der Cursor wird mit dem SQL-Befehl OPEN geöffnet (analog Open bei User controlled open). Anschließend die einzelnen Datensätze mit dem Befehl FETCH empfangen (analog zu READ/READE etc in Datenstrukturen). Die empfangenen Werte können dann verarbeitet werden. Wurden alle Sätze verarbeitet wird der Cursor mit dem SQL-Befehl CLOSE geschlossen.
Etwa so:
Code:
/Free
Exec SQL Declare CsrC01 Cursor For
Select Fld1, Fld2, ... FldN
From File
Where Key1 between :VonWert1 and :BisWert1
and Key2 between :VonWert2 and :BisWert2
and Key3 between :VonWert3 and :BisWert3
Order By Key1, Key2, Key3;
Exec SQL Open CsrC01;
DoU 1 = 0;
Exec SQL Fetch Next From CsrC01 into :Var1, :Var2, ... VarN;
If SQLCODE = 100;
Leave;
ElseIf SQLCODE < *Zeros;
//Fehler;
EndIf;
//Verarbeitung
EndDo;
Exec SQL Close CsrC01;
Birgitta
Bookmarks