不使用静态方法从Oracle 11g调用Java

不使用静态方法从Oracle 11g调用Java,java,oracle,methods,oracle11g,member,Java,Oracle,Methods,Oracle11g,Member,我道歉。再读一遍似乎有点傻。这里有两个问题。 这是代码。我试图从Oracle11g存储函数调用一个Java类,但得到一个00932错误,表示第一个位置的IN参数不一致。我将其简化了很多,以试图说明这个问题 第二部分是,只要Java函数被声明为静态,我就可以工作,但我不确定这种方法是否可行,因为将有多达1000个用户同时访问该函数,并且每个用户没有对象的实例。如果每个用户都有自己的会话空间,则不确定oracle在这种情况下如何处理内存 Oracle对象: CREATE OR REPLACE TYP

我道歉。再读一遍似乎有点傻。这里有两个问题。 这是代码。我试图从Oracle11g存储函数调用一个Java类,但得到一个00932错误,表示第一个位置的IN参数不一致。我将其简化了很多,以试图说明这个问题

第二部分是,只要Java函数被声明为静态,我就可以工作,但我不确定这种方法是否可行,因为将有多达1000个用户同时访问该函数,并且每个用户没有对象的实例。如果每个用户都有自己的会话空间,则不确定oracle在这种情况下如何处理内存

Oracle对象:

CREATE OR REPLACE TYPE MyObject AS OBJECT 
(
     col1Data   VARCHAR2(10),
      MEMBER FUNCTION createData
          RETURN VARCHAR2 AS LANGUAGE JAVA
     NAME 'MyObject.createData() return java.lang.String'
);
Java代码:

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "MyObject" AS

public class MyObject
{
    private String col1Data;

    public String createData ()
    {
         System.out.println ("col1: " + col1Data);  

    }
}
由此oracle函数调用

CREATE OR REPLACE FUNCTION fn_myobject
    (col1 IN varchar2)
        RETURN VARCHAR2
AS
    p_rc   varchar2(100);
    myObj  MyObject;

BEGIN

    myObj := new MyObject(col1);    

    p_rc := myObj.createData();   -- this line gets a 00932 error

    RETURN p_rc;

END;

再次感谢您,并为第一行的混淆感到抱歉。

静态、成员、实例、变量、函数,但没有一行代码?请同时发布您的代码。