gpt4 book ai didi

r - 如何在 RODBC 中运行 SQL 更新语句?

转载 作者:行者123 更新时间:2023-12-05 05:19:30 32 4
gpt4 key购买 nike

当尝试在 RODBC 中使用带有 sqlQuery 函数的 SQL 语句运行更新时,会出现错误

[RODBC] 错误:无法 SQLExecDirect '。

如何使用 R 运行直接更新语句?

最佳答案

SQL查询函数不能使用普通的SQL更新语句,它只需要返回一个结果集。例如,以下语句将不起作用:

sql="update mytable set column=value where column=value"
cn <-odbcDriverConnect(connection="yourconnectionstring")
resultset <- sqlQuery(cn,sql)

但是如果加上输出语句,SQL查询功能就可以正常工作了。例如。

sql="update mytable set column=value output inserted.column where column=value"
cn <-odbcDriverConnect(connection="yourconnectionstring")
resultset <- sqlQuery(cn,sql)

我刚刚添加了一个函数,可以轻松获取原始 sql 并将其快速转换为更新语句。

  setUpdateSql <-function(updatesql, wheresql, output="inserted.*"){
sql=paste(updatesql," output ",output, wheresql)
sql=gsub("\n"," ",sql) #remove new lines if they appear in sql
return(sql)

}

所以现在我只需要拆分 SQL 语句,它就会运行。如果我不想返回整个内容,我还可以添加一个“inserted.columnname”。

sql=setUpdateSql("update mytable set column=value","where column=value","inserted.column")#last parameter is optional
cn <-odbcDriverConnect(connection="yourconnectionstring")
resultset <- sqlQuery(cn,sql)

此方法的另一个优点是您可以找出结果集中发生的变化。

关于r - 如何在 RODBC 中运行 SQL 更新语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46103764/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com