在oracle数据库中调用java存储过程时出错

在oracle数据库中调用java存储过程时出错,java,oracle,jar,Java,Oracle,Jar,我已经创建了一个RunnableJar(一个包含其他第三方jar的jar,如iText.jar、java类等),并使用loadjava将该RunnableJar.jar上传到Oracle数据库中。在jar中,我有一个main类GetOffer,其中我有一个公共字符串GetOffer(stringparam1){}方法,该方法的用途是根据用户选择创建多个pdf并对其进行编码 现在我已经创建了存储过程: create or replace function getOffer(param1 in va

我已经创建了一个RunnableJar(一个包含其他第三方jar的jar,如iText.jar、java类等),并使用
loadjava
将该RunnableJar.jar上传到Oracle数据库中。在jar中,我有一个main类
GetOffer
,其中我有一个
公共字符串GetOffer(stringparam1){}
方法,该方法的用途是根据用户选择创建多个pdf并对其进行编码

现在我已经创建了存储过程:

create or replace function getOffer(param1 in varchar2) return varchar2
    is language java name 'GetOffer.getOffer(java.lang.String) return java.lang.String';
我使用以下call语句调用了此存储过程:

SQL> VARIABLE  myString  VARCHAR2(20);
SQL> CALL getOffer("XYZ") INTO :myString
调用该过程时,我收到以下错误:

SQL> VARIABLE  myString  VARCHAR2(20);
SQL> CALL getOffer("XYZ") INTO :myString
 2  ;
CALL getOffer("Any String") INTO :myString
 *
ERROR at line 1:
ORA-06576: not a valid function or procedure name

如何解决此问题?

您发布的代码正在创建存储函数,而不是存储过程。如果你想调用一个函数

SELECT getOffer('xyz')
  INTO :myString
  FROM dual;

还要记住,SQL和PL/SQL中的字符串是用单引号而不是双引号分隔的。

谢谢Justin cave,我还有一个问题,在java代码中我使用了PdfWriter.getInstance(document,new FileOutputStream(“/Standard.pdf”);当我在本地机器上使用这个jar时,存储在本地e:drive bcz上的pdf就在那里了,但如果我把这个RunnableJar.jar放在服务器上的oracle数据库中,那么pdf将存储在哪个位置?@SURJA-假设它能工作,它似乎想写入数据库服务器上的根目录。这可能不是您想要的,也不太可能是DBA允许的。谢谢Justin,我使用它调用函数,但现在他给出了以下错误选择getOffer('xyz'))INTO:myString FROM dual*第1行出现错误:ORA-29540:class GetOffer不存在我使用loadjava force-thin-user用户名上传了jar/password@Servername:PORT:SID-resolve RunnableFirstTest.jar是否有任何需要更改的内容。@SURJA-听起来像是一个单独的问题问题。我们需要知道您是如何构建JAR文件的,以及如何知道该JAR文件中有一个
GetOffer
类。请看结构