gpt4 book ai didi

RODBC 函数和错误/警告

转载 作者:行者123 更新时间:2023-12-04 11:29:38 28 4
gpt4 key购买 nike

关于此 R 代码的问题:

library(RODBC)

ch <- tryCatch(odbcConnect("RTEST"),
warning=function(w){print("FAIL! (warning)");return(NA)},
error=function(e){print(paste("ERROR:",geterrmessage()));return(NA)})

df <- tryCatch(sqlQuery(ch,"SELECT Test from tblTest"),
warning=function(w){print("FAIL! (warning)");return(NA)},
error=function(e){print(paste("ERROR:",geterrmessage()));return(NA)})

odbcClose(ch)

在两种情况下,代码都可以很好地处理错误(通过省略代码中所需的参数来强制)(警告和错误部分几乎完全相同):我得到一个 NA 值和一条错误消息。

另外,对于 sqlQuery 错误(给出无效的 DSN):NA 值和错误消息。

但不适用于 sqlQuery 的警告。没有消息输出,但 df 包含消息(因此没有 NA)。为什么?

最佳答案

我检查了 sqlQuery 的代码并发现了这个:

stat <- odbcQuery(channel, query, rows_at_time)
if (stat == -1L) {
if (errors)
return(odbcGetErrMsg(channel))
else return(invisible(stat))
}

errorsqlQuery 的参数,默认为 TRUE,因此它会为您提供没有错误或警告的字符向量。如果将其更改为sqlQuery(ch,"SELECT Test from tblTest",FALSE),则df将包含-1值。这是 C 级别的错误代码,但不是 R 中的错​​误,因此 tryCatch 无法处理它。

我想您需要在 tryCatch 之后检查是否 df==-1

关于RODBC 函数和错误/警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501528/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com