더북(TheBook)

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

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

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