次のように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のドキュメントを信頼すればうまくいくはずです
ありがとう。