我正在尝试使用以下代码来检查我的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中止。
我认为这是一个范围问题,但我不确定,也不知道如何解决它。此外,一旦我获得“成功”打印,我是否必须返回新频道,或者更改是否会反映在调用范围中的频道对象中。