SQLが埋め込まれたRPG(LE)の一連のレコードを反復処理するにはどうすればよいですか?
1479 次
2 に答える
13
通常、カーソルを作成して各レコードをフェッチします。
//***********************************************************************
// 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
私のウェブサイトの投稿で、この回答に詳細を追加しました。
于 2008-09-23T13:29:34.920 に答える
7
マイクが言ったように、カーソルを反復処理することが最善の解決策です。パフォーマンスをわずかに向上させるために追加します。一度に 1 つのレコードではなく、ブロックで処理するために配列にフェッチすることをお勧めします。
例:
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、ジェームズ・R・パーキンス
于 2009-08-07T23:42:35.687 に答える