SQL이 포함 된 RPG (LE)의 레코드 세트를 어떻게 반복합니까?
-
02-07-2019 - |
문제
SQL이 포함 된 RPG (LE)의 레코드 세트를 어떻게 반복합니까?
해결책
보통 커서를 만들고 각 레코드를 가져옵니다.
//***********************************************************************
// 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
이 답변에 더 자세한 내용을 추가했습니다 내 웹 사이트의 게시물에서.
다른 팁
Mike가 말했듯이 커서를 반복하는 것이 가장 좋은 솔루션입니다. 나는 약간 더 나은 성능을 제공하기 위해 추가 할 것입니다. 한 번에 하나의 레코드가 아닌 블록으로 처리하기 위해 배열로 가져 오는 것을 원할 수도 있습니다.
예시:
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
제휴하지 않습니다 StackOverflow