AS/400-SQL-Schleife: Unterschied zwischen den Versionen

Aus Knowledgebase
Zur Navigation springen Zur Suche springen
(Neu)
 
(+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