2015-04-28 80 views
1

我在這個類型的 - [R SQL查詢:RODBCext查詢參數

query <- "SELECT a.* FROM 
       ((SELECT x,y,z FROM t1,t2,t3 where c1 = ? and c2 = ?) as b 
       LEFT JOIN 
       (SELECT x1,y1,z1 FROM t4, t5, t6 where c3 = ? and c4 = ?) as c 
        ON b.x = c.x1) as a" 

我使用RODBCext連接和查詢數據庫。 我不喜歡這樣寫道:

library(RODBCext) 
    conHandle <- odbcConnect("dsn", uid="uid", pwd = "pwd", believeNRows = FALSE) 
    parameters <- data.frame(v1,v2,v3,v4) #values for parameters 
    response <- sqlExecute(conHandle, query, parameters, fetch = TRUE) 

我收到此錯誤:

Error in sqlExecute(conn, upit, parameters, fetch = TRUE) : 
    [RODBCext] Error: Number of parameters in query do not match number of columns in data 

這個任何幫助?

+0

很明顯,這將是艱難的沒有一個例子。你能逐步驗證嗎?即只運行帶有2個參數data.frame的t1,t2,t3語句?我還建議你合理化你的sql語句,使它更容易調試,因爲這個例子不會像需要子查詢那樣流口水。 –

+0

Steph謝謝!我的代碼顯示在這裏是好的。在我的代碼中,我有參數< - data.frame(c(v1,v2,v3,v4)),這是問題。代碼工作正常。 – Bojan

回答

0

回答這個的人正在尋找事實後:

按照github上的rodbcext包:這個錯誤拋出,因爲PARAMS(在你的SQL查詢問號的數量)的數量不匹配的數量中的參數數據幀。所犯的錯誤是將data.frame中的向量包裝成n行而不是n列。

if(nparams != LENGTH(data)) 
{ 
    error(_("Number of parameters does not match number of columns in provided data")); 
    FreeHandleResources(thisHandle); 
    return 100; 
}