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

时间:2013-06-14 15:34:01

标签: java oracle jar

我创建了一个RunnableJar(包含其他第三方jar的jar,如iText.jar,java类等等),我使用loadjava在Oracle数据库中上传了RunnableJar.jar。在jar中我有一个主类GetOffer,因为我有一个public String getOffer(String param1) { }方法,使用这个方法是根据用户选择创建多个pdf并连接它们。

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

create or replace function getOffer(param1 in varchar2) return varchar2
    is language java name 'GetOffer.getOffer(java.lang.String) return java.lang.String';

我使用以下调用语句调用了这个存储过程:

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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

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