더북(TheBook)

② 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 예외가 발생했다.

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