在 R 中执行 Postgres 函数

Execute Postgres Function in R

我正在尝试在 R 中执行一个 postgres 函数(使用 Spotfire Terr),但是我无法获得适用于 dbSendQuery 的语法

我已经尝试了 dbGetQuery 和 dbSendQuery,但无法正常工作。我查找了几个示例,但我找到的唯一示例是具有 "Insert into" 或 "UPDATE" 语句的示例。我一直没能找到如何执行一个功能。我看到 sql 服务器可以使用 sqlExecute (dbcon, "EXEC .....")。 Postgres 有等效的东西吗?

因此该函数根据传递的 3 个参数执行一些插入语句。这是我尝试过的:

Name<-'this is a test'
AInteger<-1
BInteger<-2
result<- dbSendQuery(conn, 'select * from "Main"."InsertDataSet"(?,?,?)', list(Name, AInteger,bInteger))  

该函数有 3 个参数。在 postgres 数据库中,我用 select * 从 "Main"."InsertDataSet"('a name',123,124) 调用函数。我认为它可以在 R 中以相同的方式调用...我找不到差异示例,否则。

我收到以下错误

TIBCO Spotfire Statistics Services 返回错误:'错误:RS-DBI 驱动程序:(无法检索结果:错误:“?”处或附近的语法错误 第 1 行:select * 来自 "Main"."InsertDataSet"? ^ ) 评估(expr,环境,附) 评估(expr,环境,附) dbSendQuery(conn, "select * from \"Main\".\"InsertDataSet\"?", 标准通用("dbSendQuery") .standardGeneric("dbSendQuery", 结构(函数(conn,语句, dbSendQuery(conn, "select * from \"Main\".\"InsertDataSet\"?", postgresqlExecStatement(conn, 声明, ...) 无效的'。 在 Spotfire.Dxp.Data.DataFunctions.Executors.RemoteFunctionClient.OnExecuting() 在 Spotfire.Dxp.Data.DataFunctions.Executors.AbstractFunctionClient.d__31.MoveNext() 在 Spotfire.Dxp.Data.DataFunctions.Executors.SPlusFunctionExecutor.d__12.MoveNext() 在 Spotfire.Dxp.Data.DataFunctions.DataFunctionExecutorService.d__3.MoveNext()

我从未使用过 R Postgres 包,但根据 this SO answer 我可以提出以下建议:

sql <- "SELECT * FROM Main.InsertDataSet(,,)"
result <- dbSendQuery(conn, sql, c(Name, AInteger,bInteger))
out <- dbFetch(result)
dbClearResult(result)

或更直接

out <- dbGetQuery(conn, sql, c(Name, AInteger,bInteger))