AS/400-SQL-Schleife: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
PoC (Diskussion | Beiträge) (Neu) |
PoC (Diskussion | Beiträge) (+Link) |
||
Zeile 30: | Zeile 30: | ||
C+ CLOSE SLT | C+ CLOSE SLT | ||
C/END-EXEC | C/END-EXEC | ||
== Siehe auch == | |||
* [https://try-as400.pocnet.net/wiki/Embedding_SQL_in_RPG Embedding SQL in RPG], try-as400.pocnet.net | |||
[[Kategorie: AS/400]] | [[Kategorie: AS/400]] |
Aktuelle Version vom 11. März 2019, 14:31 Uhr
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
Siehe auch
- Embedding SQL in RPG, try-as400.pocnet.net