[英]call a SQL Server Stored Procedure with Parameter in R
任何人都可以提供代码以在 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()
谢谢。
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()
只是为了澄清,在上面的代码中,** 不应该包含在代码中,所以它应该说: data <-sqlQuery(dbhandle, "set nocount on\\nEXEC my_Stored_Proc @jyear=2013, @ddate=9 /25/2013")
这对我有用。 感谢所有回答的人。
这是答案:
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
)
}
我使用了“SET NOCOUNT ON”版本的解决方案。 但是存储过程被执行并突然停止。 所以我决定使用“sqlcmd”命令来使用命令外壳。 这里我做了一个函数:
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
我正在使用 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' "
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.