gpt4 book ai didi

java - Oracle Java 存储过程

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:42 25 4
gpt4 key购买 nike

我正在尝试在 Oracle 11g 中创建一个 Java 存储过程来检索 Google Analytics 信息。

现在已经为此工作了三天,但没有成功。这是我一步一步做的:

上传了 5 个所需的 JAR 文件,here link , 到数据库使用:

loadjava -user scott/tiger@WH01 gdata-analytics-2.1.jar

然后我创建了 java 源文件(在 pl/sql developer IDE 中)并使用了上面链接中的示例代码。编译它 (f8),它出现在 Java 类树中(对于使用 jar 文件创建的类也是如此)。

在我编写了调用java类的程序之后:

创建或替换过程 KEVIN_PROCEDURE_ANALYTICS
作为语言 JAVA
NAME 'Kevin_Analytics.main(java.lang.String[])';

最后调用程序:

执行 KEVIN_PROCEDURE_ANALYTICS();

我得到了错误:

ORA-29532:Java 调用被未捕获的 Java 异常终止:java.lang.IllegalStateException:无法调用 dirty() 而不持有注册表锁。

使用谷歌我找到了this link (一个类的 java 代码,其中有一个方法可以准确地打印出这个错误消息)我想我必须使用一个同步方法,请检查链接,我想你也会发现的。

现在的问题是,我真的不知道我必须如何以及在哪里放置这段同步代码。如果你们中有人可以向我展示这一点,我会是真的。

感谢您阅读这篇文章,如果有人能帮助我,将不胜感激。

凯文·维马特

最佳答案

好吧,从上面的链接下载 jars 和示例,我将所有内容加载到我的 Oracle 数据库中,但得到了完全相同的错误。尽管错误肯定是由于同步问题引起的,但我无需添加任何内容。该代码是示例中的代码,我没有在任何地方找到直接使用“registryBuilder”对象的任何类中的对象。

好吧,把所有的东西都写得很详细会很长。因此,我将编写我执行的步骤,以克服在加载 jars 和运行代码时遇到的各种错误。也许执行相同的步骤也会为您解决问题。

1- 授予用户创建表和过程的权限,并增加用户表空间的配额。我将尝试将您提供的数据用于用户和数据库。要提供资助,请以 sysdba 身份连接:

  sqlplus sys/password@WH01 as sysdba 

连接后,授予用户 scott 并增加其配额:

  grant create any table to scott;

grant create any procedure to scott;

alter user scott quota unlimited on users;

(请就上述问题咨询您的 DBA,因为它可能不适合像我出于懒惰所做的那样提供无限制的赠款)

2- 现在再次加载文件。我一次加载所有 5 个 jar 。另外,将选项 -f 和 -genmissing 添加到您的命令,因为没有它们它不起作用:

loadjava -genmissing -f -user scott/tiger@WH01 gdata-analytics-2.1.jar gdata-analytics-meta-2.1.jar gdata-core-1.0.jar google-collect-1.0-rc1.jar jsr305.jar

这就是我让它为我运行所做的。

关于java - Oracle Java 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293092/

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