我创建了一个RunnableJar(一个包含其他第三方jar的jar,例如iText.jar,java类等),并已使用loadjava将RunnableJar.jar上传到Oracle数据库中。在罐子中,我有一个主要类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


我怎么解决这个问题?

最佳答案

您发布的代码正在创建存储功能,而不是存储过程。如果要调用函数

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


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

07-25 21:21