fn_ch14_table1 함수는 1부터 p_n만큼 루프를 돌며 ch14_num_nt 컬렉션 타입 변수인 vnt_return에 1부터 숫자를 넣은 다음 이를 반환하는 함수다. 그럼 함수를 실행해 보자.

    입력

        SELECT fn_ch14_table1 (10)
        FROM DUAL;
    

    결과

        FN_CH14_TABLE1(10)
        --------------------------------------------------------
        ORA_USER.CH14_NUM_NT(1,2,3,4,5,6,7,8,9,10)
    

    테이블 함수를 일반 함수처럼 SELECT 리스트에 사용했더니 컬렉션 타입이 반환되었다. 하지만 이 함수는 테이블 함수이므로 TABLE 연산자를 이용하여 FROM 절에서 사용하면 컬렉션을 일반 테이블처럼 사용할 수 있다.

    입력

        SELECT *
          FROM TABLE(fn_ch14_table1 (10));
    

    결과

        COLUMN_VALUE
        ----------------
                  1
                  2
                  3
                  4
                  5
                  6
                  7
                  8
                  9
                 10
    

    위 함수는 매개변수로 단순히 숫자를 받았지만 이번에는 단일 값이 아닌 커서를 매개변수로 받아 연산을 수행한 후 컬렉션 타입을 반환하는 테이블 함수를 만들어 보자. 물론 매개변수로 커서 타입을 사용하는 것은 일반 함수에서도 가능하다.

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