Ank*_*ira 7 oracle stored-procedures r execute roracle
我无法通过ROracle在R中执行/调用Oracle过程.我已经尝试了许多不同的方法来调用该过程,并且我一直遇到相同的错误.我在执行SELECT查询时没有问题但是调用过程很困难.我已经使用了oracleProc和dbSendQuery函数,但无济于事.它们都不起作用.对于调用过程的例子,Roracle文档很可怜.
假设Oracle程序在MYSCHEMA中称为MYPROC.使用NO参数的过程非常简单(它涉及读取几个表并写入表)
当我直接在Oracle Developer中执行该过程时,没有问题:
以下适用于Oracle Developer(但不适用于R)
EXEC MYSCHEMA.MYPROC;
Run Code Online (Sandbox Code Playgroud)
然后我尝试从R(通过ROracle)调用相同的过程并给我错误.我尝试了许多不同的方法来调用程序,我得到了同样的错误:
# This didn't work in R
> require(ROracle)
> LOAD_query <- oracleProc(con1, "BEGIN EXEC MYSCHEMA.MYPROC; END;")
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
.oci.oracleProc中的错误(conn,statement,data = data,prefetch = prefetch,:
# Then i tried the following and it still didn't work
> LOAD_query <- oracleProc(con1, "EXEC MYSCHEMA.MYPROC;")
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误(与上面的错误有点不同):
.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;")
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误(与第一个相同):
.oci.SendQuery出错(conn,statement,data = data,prefetch = 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;")
Run Code Online (Sandbox Code Playgroud)
我的程序没有任何参数.正如我所提到的,在Oracle开发人员中调用它时效果很好.我已经没有想法如何在R中获得如此荒谬的简单查询工作!我只对通过ROracle获得这项工作感兴趣.
小智 4
您是否首先创建(编译)了该过程?例如:
dbGetQuery(con, "CREATE PROCEDURE MYPROC ... ")
Run Code Online (Sandbox Code Playgroud)
然后尝试执行这样的过程:
oracleProc(con, "BEGIN MYPROC(); END;")
Run Code Online (Sandbox Code Playgroud)
你说得对,ROracle::oracleProc文档不好。这个例子帮助了我:
https: //community.oracle.com/thread/4058424