我正在尝试使用RStudio 1.0预览版本中提供的SQL chunk function连接到一个SQL Server(使用DBI的RSQLServer后端),但我在传递变量时遇到一些困难。
如果我连接到服务器,然后将查询放在chunk中,它会按预期工作
```{r, eval = F}
svr <- dbConnect(RSQLServer::SQLServer(), "Server_name", database = 'Database_name')
query <- 'SELECT TOP 10 * FROM Database_name.dbo.table_name'
```
```{sql, connection = svr, eval = F}
SELECT TOP 10 * FROM Database_name.dbo.table_name
```
但是,如果我尝试将查询作为变量传递,它会抛出错误。
```{sql, connection = svr, eval = F}
?query
```
Error: Unable to retrieve JDBC result set for 'SELECT TOP 10 * FROM Database_name.dbo.table_name': Incorrect syntax near 'SELECT TOP 10 * FROM Database_name.dbo.table_name'.
Failed to execute SQL chunk
我认为这与 R 在引用字符向量时的方式有关,因为如果我运行以下代码,我会得到相同的错误。
```{sql, connection = svr, eval = F}
'SELECT TOP 10 * FROM Database_name.dbo.table_name'
```
有没有办法解决这个错误?
目前,我可以通过使用内联表达式打印查询结果,使用pygments进行高亮显示并在R代码块中运行带有DBI命令的查询来实现我的目标,因此使用代码块会更好一些。