我正在尝试在 Oracle 中创建一个对象方法,如下所示:
CREATE OR REPLACE TYPE BODY TheType AS
MEMBER FUNCTION getAtt RETURN VARCHAR2 IS
BEGIN
RETURN DEREF(SELF.Att).Att2;
END;
END;
/
但我收到以下错误:
PLS-00306: wrong number or types of arguments in call to 'DEREF'
TheType 类型也是这样声明的:
CREATE OR REPLACE TYPE TheType UNDER SuperType ();
/
...
ALTER TYPE TheType ADD ATTRIBUTE ( Att REF TheType ) CASCADE;
...
ALTER TYPE TheType
ADD MEMBER FUNCTION getAtt RETURN VARCHAR2
CASCADE;
以及 Supertype 的定义:
CREATE OR REPLACE TYPE SuperType AS OBJECT ( Att2 VARCHAR2(50) )
NOT FINAL NOT INSTANTIABLE;
/
我给 DEREF 函数一个类型正确的 var,为什么会出现这个错误?
如果我信任Oracle 文档,它应该可以工作
谢谢。