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:
BirgittaCode:/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;
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks