2017-10-30 21 views
2

私はRで、次の機能を持っている:RのSQLクエリで関数パラメータを渡すには?

dbhandle <- odbcDriverConnect('driver={SQL Server}; 
           server=myServer;database=myDB; 
           trusted_connection=true') 
func <- function(x){ 
    sqlQuery(dbhandle, 'select attr from myTable where cond = x') 
} 

私はcond属性のwhere状態にxパラメータを渡す方法を知りたいです。例えば、私はfunc(10)を計算したい場合、クエリがなければなりません:

select attr from myTable where cond = 10 
+1

を正しく答えの下の大多数にはないSQLのパラメータ化と呼ばれる概念があるとして、あなたが*パラメータ*によって何を意味するかを定義してくださいRODBCパッケージ用のものを除いて使用する。 – Parfait

答えて

3

あなたがpasteと試みることができる:

func <- function(x){ 
    sqlQuery(dbhandle, paste('select attr from myTable where cond =', x)) 
} 
1

それは本当に同じだけれども、私は、これらの事についてglueパッケージが好きただきれいpasteは、:

library(glue) 

func <- function(x){ 
    sqlQuery(dbhandle, glue('select attr from myTable where cond = {x}')) 
} 
3

RODBCを使用して、私はパラメータ化クエリを使用することを好みます。これは、SQLインジェクションを避けるため、文字列を渡すときにはより重要になります。あなたもdplyr自体を使用することができます。この単純なケースで

library(RODBCext) 

sqlExecute(dbhandle, 
      "select attr from myTable where cond = ?", 
      data = list(cond = 10), 
      fetch = TRUE, 
      stringsAsFactors = FALSE) 
-1

library(dplyr) 

func <- function(x) { 
    tbl(dbhandle, "myTable") %>% 
     select(attr) %>% 
     filter(cond == x) %>% 
     collect() 
} 
関連する問題