10

任何人都可以提供代码以在 R 中调用带有参数的 SQL 服务器存储过程吗?

这就是我所拥有的,但它不起作用:

dbhandle <- odbcDriverConnect('driver={SQL Server};server=SWD-CHISSIS01;database=GlobalRiskManagement;trusted_connection=true')
data <-sqlQuery(dbhandle, "EXEC my_Stored_Proc  @jyear=2013, @ddate=9/25/2013")
odbcCloseAll()

谢谢你。

4

5 回答 5

2
dbhandle <- odbcDriverConnect('driver={SQL Server};server=SWD-CHISSIS01;database=GlobalRiskManagement;trusted_connection=true')
data <-sqlQuery(dbhandle, "**set nocount on\n**EXEC my_Stored_Proc  @jyear=2013, @ddate=9/25/2013")
odbcCloseAll()
于 2015-03-19T12:06:54.800 回答
1

为了澄清,在上面的代码中,**不应该包含在代码中,所以它应该说: data <-sqlQuery(dbhandle, "set nocount on\nEXEC my_Stored_Proc @jyear=2013, @ddate=9 /25/2013")

这对我有用。感谢所有回复的人。

于 2016-06-07T11:53:05.570 回答
0

这是答案:

library(RODBC)

GetData <- function (Field1) {
  conn<- odbcDriverConnect('driver={SQL Server};server=SERVER;database=DATABASE;trusted_connection=yes')

  data <- sqlQuery(conn,paste("exec my_STOREDPROC @Field1= '", Field1 , "';",sep =""),errors=FALSE)
  odbcCloseAll()
  data
)
}
于 2013-09-27T15:31:56.223 回答
0

我使用了“SET NOCOUNT ON”版本的解决方案。但是存储过程被执行并突然停止。所以我决定使用“sqlcmd”命令来使用命令shell。这里我做了一个函数:

callStoredProc = function(server,BD,storedProc,sParams){
    sFileName = paste("log_",gsub(":", "_", gsub("-", "_", gsub("\\.", "_", Sys.time()))),storedProc,".txt",sep="")
    sQuery = paste("sqlcmd -E -S ",server," -d ",BD," -Q \"EXECUTE ",storedProc," ",sParams,"\" -o \"",sFileName,"\"", sep="")
    shell(sQuery)
}#callStoredProc
于 2015-10-14T02:13:35.053 回答
0

我正在使用 RSQLS 库连接到 SQL Server。我使用“con”作为我的连接变量,“param”作为我的所有参数,在这种情况下它们是日期。要解决的问题是 paste() 不会单独保留嵌入的单引号,因此您必须构建过程调用。

fromdate<-"2020-06-01"
thrudate<-"2021-05-31"

# param is not special, just a variable name
param<-paste( "'", fromdate, "', '",thrudate,"' ",  sep="")

# call the procedure
df <- pull_data(con,  paste(" EXEC myProcedure", param), showprogress = TRUE)

# this gets passed to pull_data(): 
#        " EXEC myProcedure '2020-06-01', '2021-05-31' "
于 2021-04-09T16:59:19.317 回答