2

我正在尝试使用以下代码检查我的 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 中止。

我想这是一个范围界定问题,但我不确定也不知道如何解决它。此外,一旦我打印“成功”,我是否必须返回新通道,或者更改是否会反映在调用范围内的通道对象中。

4

0 回答 0