더북(TheBook)

사용자 정의 테이블 함수

다시 한번 말하지만, 사용자 정의 테이블 함수라고 해서 뭔가 특별한 것이 있는 것은 아니며 일반 사용자 정의 함수와 다르지 않다. 다만 테이블 함수는 컬렉션 타입을 반환하므로, 테이블 함수를 만들고 사용하려면 그 대상이 되는 컬렉션 타입이 먼저 만들어져 있어야 한다. 그럼 예제를 통해 테이블 함수에 대해 알아 보자.

입력

    CREATE OR REPLACE TYPE ch14_num_nt IS TABLE OF NUMBER;

결과

    TYPE CH14_NUM_NT이(가) 컴파일되었습니다.

이제 ch14_num_nt 컬렉션을 반환하는 함수를 만들어 보자.

입력

    CREATE OR REPLACE FUNCTION fn_ch14_table1 ( p_n NUMBER )
      RETURN ch14_num_nt         -- 컬렉션 타입 반환
    IS
      -- 컬렉션 변수 선언(컬렉션 타입이므로 초기화를 한다)
      vnt_return ch14_num_nt := ch14_num_nt();
    BEGIN
      -- 1부터 입력매개변수인 p_n만큼 숫자 넣기
      FOR i IN 1..p_n
      LOOP
        vnt_return.EXTEND;
        vnt_return(i) := i;
      END LOOP;

      RETURN vnt_return; -- 컬렉션 타입 반환
    END;

결과

    FUNCTION FN_CH14_TABLE1이(가) 컴파일되었습니다.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.