在一个相关的Scala question中,我问了以下问题:
当我需要使用 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 中做到这一点?