我无法通过ROracle在R中执行/调用Oracle过程。我已经尝试了许多不同的方法来调用该过程,并且我一直遇到同样的错误。 我在执行SELECT查询时没有任何问题,但调用过程非常困难。我已经使用了oracleProc和dbSendQuery函数,但无济于事。它们都不起作用。对于调用过程的例子,Roracle文档很可怜。
让我们说Oracle程序在MYSCHEMA中称为MYPROC。使用NO参数(包括读取几个表并写入表),过程非常简单
当我直接在Oracle Developer中执行该过程时,没有问题:
以下适用于Oracle Developer(但不适用于R)
EXEC MYSCHEMA.MYPROC;
然后我尝试从R(通过ROracle)调用相同的程序并给我错误。我尝试了许多不同的调用程序的方法,我得到了同样的错误:
# This didn't work in R
> require(ROracle)
> LOAD_query <- oracleProc(con1, "BEGIN EXEC MYSCHEMA.MYPROC; END;")
这是我得到的错误:
.oci.oracleProc中的错误(conn,statement,data = data,prefetch = 预取,:
# Then i tried the following and it still didn't work
> LOAD_query <- oracleProc(con1, "EXEC MYSCHEMA.MYPROC;")
这是我得到的错误(与上面的错误有点不同):
.oci.oracleProc中的错误(conn,statement,data = data,prefetch = prefetch,:ORA-00900:无效的SQL语句
# so then i tried dbSendQuery which works perfectly fine with any SELECT statements but it didn't work
> LOAD_query <- dbSendQuery(con1, "BEGIN EXEC MYSCHEMA.MYPROC; END;")
这是我得到的错误(与第一个相同):
.oci.SendQuery中的错误(conn,statement,data = data,prefetch = 预取,:
# I even tried the following to exhaust all possibilities. And still no luck. I get the same error as above:
> LOAD_query <- oracleProc(con1, "BEGIN EXEC MYSCHEMA.MYPROC(); END;")
我的程序没有任何参数。正如我所提到的,在Oracle开发人员中调用它时效果很好。 我已经没有想法如何在R中获得如此荒谬的简单查询工作! 我只对通过ROracle获得这项工作感兴趣。
答案 0 :(得分:3)
您是否首先创建(编译)过程?例如: dbGetQuery(con,“CREATE PROCEDURE MYPROC ...”)
然后尝试执行如下过程: oracleProc(con,“BEGIN MYPROC(); END;”)
你是对的,ROracle :: oracleProc文档并不好。这个例子帮助我: https://community.oracle.com/thread/4058424