使用odbc/DBI从R中的存储过程结果检索输出

使用odbc/DBI从R中的存储过程结果检索输出,r,sql-server,stored-procedures,odbc,r-dbi,R,Sql Server,Stored Procedures,Odbc,R Dbi,我试图调用存储过程并检索输出。我正在使用兼容的包调用SQL Server。我如何使用这个软件包?以下代码返回受影响的行数 sql <- "EXEC schema.prc_person @name_first='bob'" channel <- DBI::dbConnect(odbc::odbc(), dsn="db-remote") guy <- DBI::dbExecute( channel, sql) DBI::dbDisconnect(channel);

我试图调用存储过程并检索输出。我正在使用兼容的包调用SQL Server。我如何使用这个软件包?以下代码返回受影响的行数

sql     <- "EXEC schema.prc_person @name_first='bob'"
channel <- DBI::dbConnect(odbc::odbc(), dsn="db-remote")
guy     <- DBI::dbExecute( channel, sql)
DBI::dbDisconnect(channel); rm(channel)
作为参考,这两条语句满足我的需要(使用and包)。同样在
odbc
包中,我尝试了
dbCallProc()
dbSendQuery()
,和
dbSendStatement()


频道您可以使用
dbGetQuery

sql     <- "EXEC schema.prc_person @name_first='bob'"
channel <- DBI::dbConnect(odbc::odbc(), dsn="db-remote")
guy     <- DBI::dbGetQuery(channel, sql)
DBI::dbDisconnect(channel); rm(channel)
sql
channel <- RODBC::odbcConnect(dsn="db-remote")
guy     <- RODBCext::sqlExecute(channel, "EXEC schema.tbl_person @name_first='bob'", fetch=T) # Notice the 'fetch' parameter
RODBC::odbcClose(channel); rm(channel)

channel <- RODBC::odbcConnect(dsn="db-remote")
guy     <- RODBC::sqlQuery(channel, "EXEC schema.tbl_person @name_first='bob'")
RODBC::odbcClose(channel); rm(channel)
sql     <- "EXEC schema.prc_person @name_first='bob'"
channel <- DBI::dbConnect(odbc::odbc(), dsn="db-remote")
guy     <- DBI::dbGetQuery(channel, sql)
DBI::dbDisconnect(channel); rm(channel)