Comment puis-je parcourir un ensemble d'enregistrements dans RPG (LE) avec Embedded SQL?
-
02-07-2019 - |
Question
Comment puis-je parcourir un ensemble d'enregistrements dans RPG (LE) avec SQL intégré?
La solution
Habituellement, je crée un curseur et récupère chaque enregistrement.
//***********************************************************************
// 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
J'ai ajouté plus de détails à cette réponse dans une publication sur mon site Web .
Autres conseils
Comme l'a dit Mike, itérer sur un curseur est la meilleure solution. J'ajouterais que pour améliorer légèrement les performances, vous souhaiterez peut-être extraire un tableau à traiter en blocs plutôt qu'un enregistrement à la fois.
Exemple:
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow