Wie iterieren ich über einen Satz von Datensätzen in RPG (LE) mit eingebetteten SQL?
-
02-07-2019 - |
Frage
Wie kann ich iterieren über eine Reihe von Datensätzen in RPG (LE) mit eingebetteten SQL?
Lösung
In der Regel werde ich einen Cursor erstellen und jeden Datensatz holen.
//***********************************************************************
// Main - Main Processing Routine
begsr Main;
exsr BldSqlStmt;
if OpenSqlCursor() = SQL_SUCCESS;
dow FetchNextRow() = SQL_SUCCESS;
exsr ProcessRow;
enddo;
if sqlStt = SQL_NO_MORE_ROWS;
CloseSqlCursor();
endif;
endif;
CloseSqlCursor();
endsr; // Main
Ich habe mehr Details zu dieser Antwort hinzugefügt in einem Beitrag auf meiner Website .
Andere Tipps
Wie Mike sagte, über einen Cursor Iterieren ist die beste Lösung. Ich möchte hinzufügen, etwas bessere Leistung zu geben, könnte man vielleicht in ein Array holen wollen in Blöcke zu verarbeiten, anstatt einen Datensatz zu einem Zeitpunkt.
Beispiel:
EXEC SQL
OPEN order_history;
// Set the length
len = %elem(results);
// Loop through all the results
dow (SqlState = Sql_Success);
EXEC SQL
FETCH FROM order_history FOR :len ROWS INTO :results;
if (SQLER3 <> *zeros);
for i = 1 to SQLER3 by 1;
// Load the output
eval-corr output = results(i);
// Do something
endfor;
endif;
enddo;
HTH, James R. Perkins
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow