gpt4 book ai didi

r - 使用 ROracle 在 R 中执行存储的 Oracle 过程

转载 作者:行者123 更新时间:2023-12-01 18:05:20 27 4
gpt4 key购买 nike

我在通过 ROracle 在 R 中执行/调用 Oracle 过程时遇到问题。我尝试了许多不同的方法来调用该过程,但我不断收到相同的错误。我在执行 SELECT 查询时没有遇到任何问题,但调用过程却很困难。我使用了 oracleProc 和 dbSendQuery 函数,但没有效果。他们都不起作用。 Roracle 文档中的调用过程示例少之又少。

假设 Oracle 过程在 MYSCHEMA 中称为 MYPROC。该过程非常简单,没有任何参数(它涉及读取几个表并写入表)

当我直接在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;")

这是我得到的错误:

Error in .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;")

这是我得到的错误(与上面的有点不同):

Error in .oci.oracleProc(conn, statement, data = data, prefetch = prefetch, : ORA-00900: invalid SQL statement

# 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;")

这是我得到的错误(与第一个错误相同):

Error in .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;")

我的程序没有任何参数。正如我提到的,在 Oracle 开发人员中调用时它工作得很好。我已经不知道如何在 R 中进行如此简单的查询工作了! 不过,我只对通过 ROracle 完成这项工作感兴趣。

最佳答案

您是否首先创建(编译)了该过程?例如:

dbGetQuery(con, "CREATE PROCEDURE MYPROC ... ")

然后尝试执行这样的过程:

oracleProc(con, "BEGIN MYPROC(); END;")

你说得对,ROracle::oracleProc 文档不好。这个例子帮助了我: https://community.oracle.com/thread/4058424

关于r - 使用 ROracle 在 R 中执行存储的 Oracle 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com