在事务之外迭代 ResultSet?

Iterate through a ResultSet outside of a Transaction?

我有一些代码如下所示:

__block FMResultSet *s;
[databaseQueue inDatabase:^(FMDatabase * _Nonnull db) {
    s = [db executeQuery: @"SELECT * session;"];
}];

while ([s next]){
    //convert the row into a Session object.
    [databaseQueue inDatabase:^(FMDatabase * _Nonnull db) {
        [db executeUpdate:@"UPDATE session ...", arg1, arg2];
    }];
}

这样可以吗?或者我是否需要将 while 循环移动到第一个 inDatabase 块内?

我正在使用 FMDB 和 objective C,但我猜像这样的东西是大多数数据库包装器的标准。

经过更多测试后,我能够回答我自己的问题。当我尝试上面概述的内容时收到警告:

Warning: there is at least one open result set around after performing [FMDatabaseQueue inDatabase:]

所以我猜你 可以 做到,因为我确实得到了结果。但至少 fmdb,不喜欢这个主意...