関連するScalaの質問で、私は次のように質問しました。
JDBCドライバーを使用してPostgreSQLデータベースから数百万のデータベース行を読み取る必要がある場合は、常にカーソルを使用します。そうしないと、OutOfMemoryErrorが発生します。これが私が使用するパターン(擬似コード)です:
begin transaction
execute("declare cursor...")
while (true) {
boolean processedSomeRows = false
resultSet = executeQuery("fetch forward...")
while (resultSet.next()) {
processedSomeRows = true
...
}
if (!processedSomeRows) break
}
close cursor
commit
これは慣用的なHaskellでどのように行うことができますか?