AS/400-SQL-Schleife
Zur Navigation springen
Zur Suche springen
Die Selektion von Datensätzen anhand eines (exakten) Vergleichswertes ist in RPG nicht auf DB-Ebene möglich. Lediglich das Anspringen des ersten Datensatzes in einer Tabelle ist machbar (SETLL). Zum Glück gibt es SQL, auch wenn dies leider nicht komplett integriert ist, sondern sehr angeflanscht aussieht! Beispiel einer SQLRPGLE-Schleife mit Vor- und Nachbereitung…
Vorarbeiten
Rpgvarname ist hierbei eine Variable innerhalb RPG.
C/EXEC SQL C+ DECLARE SLT CURSOR FOR SELECT BLAH FROM LIB/BLUBBTBL C+ WHERE FOO = :RPGVARNAME FOR READ ONLY C/END-EXEC C/EXEC SQL C+ OPEN SLT C/END-EXEC C/EXEC SQL C+ WHENEVER NOT FOUND GOTO ENDOFLOOP C/END-EXEC
Schleife
- Die Schleife wird implizit durch das oben gezeigte WHENEVER-Statement beendet.
- RCDEXP ist eine vorher zu deklarierende Datenstruktur, welche die gleiche Feldart und -Folge der DB-Datei haben muss.
DO C/EXEC SQL C+ FETCH NEXT FROM SLT INTO :RCDEXP C/END-EXEC ENDDO ENDOFLOOP TAG
Nachbereitung
C/EXEC SQL C+ CLOSE SLT C/END-EXEC