2
我是Oracle Objects的新手,遇到問題。我不知道如何從REF的VARRAY中取消引用項目。以下是一些源代碼,可以再現我擁有的問題。 錯誤是:PLS-00306:在調用「DEREF」錯誤數量或類型的參數Oracle PL/SQL:如何從REF的VARRAY中DEREF?
DROP TYPE LOC FORCE
/
DROP TYPE LIST_LOC FORCE
/
DROP TYPE PIZ FORCE
/
CREATE OR REPLACE TYPE LOC AS OBJECT(
NAME VARCHAR2(30),
MEMBER FUNCTION GET_NAME RETURN VARCHAR2
)
/
CREATE OR REPLACE TYPE BODY LOC AS
MEMBER FUNCTION GET_NAME RETURN VARCHAR2 IS
BEGIN
RETURN SELF.NAME;
END;
END;
/
CREATE OR REPLACE TYPE LIST_LOC AS VARRAY(10) OF REF LOC
/
CREATE OR REPLACE TYPE PIZ AS OBJECT(
LOCS LIST_LOC,
MEMBER PROCEDURE DISPLAY_LOCS
)
/
CREATE OR REPLACE TYPE BODY PIZ AS
MEMBER PROCEDURE DISPLAY_LOCS IS
BEGIN
FOR IDX IN SELF.LOCS.FIRST..SELF.LOCS.LAST LOOP
DBMS_OUTPUT.PUT_LINE(DEREF(SELF.LOCS(IDX)).GET_NAME()); --this is the line that generates the error
END LOOP;
END;
END;
/
出現在DISPLAY_LOCS過程中的錯誤,當我嘗試從LOCS VARRAY獲得在位置IDX的REF,並DEREF它得到的名稱。
非常感謝。 – 2011-05-02 19:37:37