2
Oracle Objects를 처음 사용하는데 문제가 있습니다. VARRAY of REFs에서 항목을 참조 해제하는 방법을 모르겠습니다. 다음은 내가 가지고있는 문제를 재현하는 일부 소스 코드입니다. 오류는 다음과 같습니다 PLS-00306 : 'DEREF'에 대한 호출에 잘못된 번호 또는 인수의 유형Oracle PL/SQL : VARRAY의 REF를 어떻게 처리합니까?
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;
/
나는 LOCS VARRAY에서 위치 IDX에서 REF를 얻으려고 할 때 오류가 DISPLAY_LOCS 절차에 나타납니다, 그 이름을 얻기 위해 그것을 명심해야합니다.
대단히 감사합니다. –