② TRIM 메소드

    TRIM 메소드는 VARRAY나 중첩 테이블의 맨 끝에서부터 매개변수로 넘긴 개수만큼 해당 요소를 제거한다. 즉 매개변수로 2가 넘어왔다면, 맨 끝에 있는 2개의 요소를 삭제한다. 만약 매개변수로 넘어온 값이 없다면 맨 끝에 있는 한 요소만 삭제한다. 만약 해당 컬렉션의 크기가 0이거나 매개변수에 해당하는 요소가 없을 때 TRIM 메소드를 사용하면 ORA-06533: SUBSCRIPT_BEYOND_COUNT(첨자가 개수를 넘었습니다) 예외가 발생한다.

    입력

        DECLARE
          -- 중첩 테이블 선언
          TYPE nt_typ IS TABLE OF VARCHAR2(10);
    
          -- 변수 선언
          vnt_test nt_typ;
        BEGIN
          -- 생성자를 사용해 값 할당 (크기는 5)
          vnt_test := nt_typ('FIRST', 'SECOND', 'THIRD', 'FOURTH', 'FIFTH');
    
          -- 맨 마지막부터 2개 요소 삭제
          vnt_test.TRIM(2);
    
          DBMS_OUTPUT.PUT_LINE(vnt_test(1));
          DBMS_OUTPUT.PUT_LINE(vnt_test(2));
          DBMS_OUTPUT.PUT_LINE(vnt_test(3));
          DBMS_OUTPUT.PUT_LINE(vnt_test(4));    -- 오류 발생, 2개 삭제했으므로 3개만 남아있기 때문
    
        EXCEPTION WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE(SQLERRM);
          DBMS_OUTPUT.PUT_LINE( DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
        END;
    

    결과

        FIRST
        SECOND
        THIRD
        ORA-06533: 첨자가 개수를 넘었습니다.
        ORA-06512: 17행
    

    TRIM(2)를 실행해 끝에서 2개의 요소를 제거하므로 남은 요소의 수는 총 3개다. 그런데 4번 인덱스를 참조해 값을 출력하려고 시도해서 오류가 발생한 것이다. 따라서 1~3번째까지는 요소의 값이 제대로 출력되었고, 4번째 값을 출력하려는 순간 ORA-06533 예외가 발생했다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.