我道歉。再读它确实看起来有点傻。真的有两个问题。 这是代码。我试图从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;
再次感谢并对第一个的混淆感到抱歉。