尝试在SQL Server上设置参数化查询时dbBind函数错误

时间:2019-04-09 01:31:12

标签: r r-dbi

我正在尝试使用DBI软件包dbSendQuerydbBinddbFetch工作流程进行一些参数化查询。

我可以使用dbSendQuery?用作变量的占位符。但是,当我运行dbBind时,出现以下错误:

Error in (function (classes, fdef, mtable)  :
unable to find an inherited method for function 'dbBind' for signature '"Microsoft SQL Server"'

我的整个代码如下:

library(odbc)
library(DBI)
test_connection <- DBI::dbConnect(odbc::odbc(),
                                  Driver = "SQL Server",
                                  Server = "MyServer",
                                  Database = "MyDataBase")
test_query <- dbSendQuery(test_connection,
                          "SELECT TOP 2 col1, col2 FROM MyTable WHERE col2 = ?")
dbBind(test_connection,
       list('value'))

Error in (function (classes, fdef, mtable)  :
            unable to find an inherited method for function 'dbBind' for signature '"Microsoft SQL Server"'

有人可以向我解释此错误的原因吗?

如果我在value语句中对dbSendQuery进行了硬编码并使用了dbFetch,那么查询确实可以正常工作。

1 个答案:

答案 0 :(得分:1)

dbBind中,您应该使用查询对象而不是连接对象。在您的示例中:

dbBind(test_query, list('value'))