在不使用静态方法的情况下从Oracle 11g调用Java

时间:2014-11-21 05:25:37

标签: java oracle methods oracle11g member

我道歉。再读它确实看起来有点傻。真的有两个问题。 这是代码。我试图从Oracle 11g存储函数调用Java类,但是收到00932错误,说第1个位置的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;

再次感谢并对第一个的混淆感到抱歉。

0 个答案:

没有答案