RODBCext查询参数
问题描述:
我在这个类型的 - [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
这个任何帮助?
答
回答这个的人正在寻找事实后:
按照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;
}
很明显,这将是艰难的没有一个例子。你能逐步验证吗?即只运行带有2个参数data.frame的t1,t2,t3语句?我还建议你合理化你的sql语句,使它更容易调试,因为这个例子不会像需要子查询那样流口水。 –
Steph谢谢!我的代码显示在这里是好的。在我的代码中,我有参数 Bojan