Wie iteriere ich über eine Reihe von Datensätzen in RPG (LE) mit Embedded SQL?Wie wiederhole ich eine Reihe von Datensätzen in RPG (LE) mit Embedded SQL?
7
A
Antwort
12
Normalerweise werde ich einen Cursor erstellen und jeden Datensatz abrufen.
//***********************************************************************
// 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 in a post on my website hinzugefügt.
7
Wie Mike sagte, ist die Iteration über einen Cursor die beste Lösung. Ich würde hinzufügen, um eine etwas bessere Leistung zu geben, möchten Sie vielleicht in ein Array abrufen, um in Blöcken und nicht jeweils einen Datensatz zu verarbeiten.
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
+0
Ich mag das ... Ich habe das vorher nicht gemacht. Ich muss es auf großen Recordsets versuchen. –
Hallo @ Mike Wills, ich war interessiert ausführlicher darüber zu lesen, aber der Link zu Ihrer Website ist gebrochen. – mike