[英]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.