Кажется, проблема в вашем синтаксисе SQL, а не в том, что присуще R или пакету RODBC.Я вполне уверен, что вам нужно разделить свои операторы SQL с помощью команды go
, чтобы убедиться, что первый оператор завершил выполнение до второго, третий и т. Д.В качестве альтернативы вы можете разбить их на четыре разных утверждения, как я сделал ниже.Это работает на моей машине:
library(RODBC)
ch <- odbcConnect("details")
qry1 <- "create table #temptable (test int)"
qry2 <- "insert into #temptable(test) values(2)"
qry3 <- "select * from #temptable"
qry4 <- "drop table #temptable"
sqlQuery(ch, qry1)
sqlQuery(ch, qry2)
doesItWork <- sqlQuery(ch, qry3)
sqlQuery(ch, qry4)
И вывод
> doesItWork
test
1 2
РЕДАКТИРОВАТЬ
Превращение всех ваших запросов в объект списка иитерация по ним может сэкономить вам кодирование в будущем.Например:
queryList <- list(qry1, qry2, qry3, qry4)
sqlOutput <- lapply(queryList, function(x) sqlQuery(ch, x))
Это создаст какой-то посторонний вывод, который может вас не волновать, но интересующие вас результаты можно получить с помощью sqlOutput[[3]]
, где 3 представляет интересующий запрос.