简体   繁体   English

使用RODBC进行Paramterized SQL查询

[英]Paramterized SQL Query with RODBC

I have the following SQL query which I submit via RODBC to SQL Server 我有以下SQL查询,我通过RODBC提交给SQL Server

test = "SELECT ticker, date, PX_LAST FROM dbo.bb_si_ts_data_lc
            WHERE ticker = 'SPX Index' AND date > '2014-12-31'"
ts_db_monthly = sqlQuery(conn_db,test)

This works perfectly fine. 这完全没问题。

Now I tried to parameterize the query 现在我尝试参数化查询

date_input_start = paste("2014-12-31")
date_sql_start = paste("AND date>= (\"",date_input_start,"\")")
ticker_input = 'SPX Index'
ticker_sql_input = paste("WHERE ticker IN(\"",ticker_input,"\")")
fields_input = c("ticker","date","PX_LAST")
db = "dbo.bb_si_ts_data_lc"
query_test = paste("SELECT ticker,date,PX_LAST FROM",db,ticker_sql_input,date_sql_start)
ts_db_monthly_test = sqlQuery(conn_db,query_test)

This, however, does not work. 但是,这不起作用。 The error message I get is: 我得到的错误信息是:

[1] "42S22 207 [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name ' SPX Index '."                                                                 
[2] "42S22 207 [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name ' 2014-12-31 '."                                                                
[3] "[RODBC] ERROR: Could not SQLExecDirect 'SELECT ticker,date,PX_LAST FROM dbo.bb_si_ts_data_lc WHERE ticker IN(\" SPX Index \") AND date>= (\" 2014-12-31 \")'"

Can you help me to get this code correct? 你能帮我把这段代码搞定吗? It appears to me that the problem circles around the quotation marks. 在我看来,问题围绕引号。

Use single quotes, not double quotes. 使用单引号,而不是双引号。

But you should use question marks to indicate your parameters and pass in the parameters separately. 但是您应该使用问号来指示您的参数并分别传递参数。 Try this article to help: http://cran.r-project.org/web/packages/RODBCext/vignettes/Parameterized_SQL_queries.html 试试这篇文章来帮助: http//cran.r-project.org/web/packages/RODBCext/vignettes/Parameterized_SQL_queries.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM