我正在尝试使用以下代码检查我的 RODBC 连接是否打开(如果没有打开/重新打开它)。
check.connect <- function(channel) {
connected <- FALSE;
while (!connected) {
tryCatch(
{ sqlQuery(channel, "SELECT * FROM deb.table LIMIT 1;");
print('Success')
connected <- TRUE },
error=function(e) {
print('Reconnecting');
channel <- odbcConnect('SQLConn')
})
}
}
这变成了一个无限循环。打印 sqlQuery 行错误和“重新连接”,直到我使用 ctrl+c 中止。
我想这是一个范围界定问题,但我不确定也不知道如何解决它。此外,一旦我打印“成功”,我是否必须返回新通道,或者更改是否会反映在调用范围内的通道对象中。