2013-05-24 2 views
0

오라클 객체 유형 배열을 생성하려고하는데 초기화 관련 오류가 발생합니다.Oracle 객체 배열 초기화 콜렉션

아래는 아래 콘솔에 오류가있는 샘플 스크립트

set serveroutput on 
DECLARE 
    r1 rectangle; 
    r2 rectangle; 
    type rect_arr is table of rectangle; 
    m_rect rect_arr; 
BEGIN 
    m_rect.extend; 
    m_rect(1) := rectangle(10,20); 
    sop(m_rect(1).area); 
END; 

아래 실행하려면 샘플 코드

CREATE OR REPLACE TYPE rectangle AS OBJECT 
(
-- The type has 3 attributes. 
    length NUMBER, 
    width NUMBER, 
    area NUMBER, 
-- Define a constructor that has only 2 parameters. 
    CONSTRUCTOR FUNCTION rectangle(length NUMBER, width NUMBER) 
    RETURN SELF AS RESULT 
); 

CREATE OR REPLACE TYPE BODY rectangle AS 
    CONSTRUCTOR FUNCTION rectangle(length NUMBER, width NUMBER) 
    RETURN SELF AS RESULT 
    AS 
    BEGIN 
    SELF.length := length; 
    SELF.width := width; 

    SELF.area := length * width; 
    RETURN; 
    END; 
END; 

입니다 ----- 내가이 오류를 초기화와 관련이 알고, 다양한 생성자와 멤버 함수 솔루션을 시도했지만 도움이되지는 못했습니다.

오류보고 : ORA-06531 : ORA-06,512 초기화 컬렉션 에 참조 : 06531. 00000 선로 (7)의 - "초기화 컬렉션 참조"* 원인 : 중첩 테이블의 요소 또는 부재 함수 또는 초기화 된 컬렉션이없는 (초기화 된 컬렉션이 필요한 경우) 이 참조되었습니다. * 동작 : 적절한 생성자 또는 전체 개체 할당을 사용하여 컬렉션을 초기화하십시오.

답변

3
m_rect rect_arr := rect_arr(); 
+0

감사합니다. –