1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* PACKAGE SPEC */
CREATE OR REPLACE PACKAGE APPS.KBMIN_TEST IS
   --Return Row type
   TYPE menu_rec_kbmin IS RECORD
   (            
      test1 VARCHAR2(100),
      test2 NUMBER 
   );
 
   --Return 하게될 Row type Array
   TYPE menu_rec_set_kbmin IS TABLE OF menu_rec_kbmin;
 
   FUNCTION getTable RETURN menu_rec_set_kbmin PIPELINED;
END KBMIN_TEST; 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* PACKAGE BODY */
CREATE OR REPLACE PACKAGE BODY APPS.KBMIN_TEST IS
   FUNCTION getTable
      RETURN menu_rec_set_kbmin PIPELINED
      IS
      v_menu       menu_rec_kbmin;
    BEGIN
      FOR func_cur IN (SELECT 'a' AS test1, 1 AS test2 FROM dual
                       UNION ALL
                       SELECT 'b' AS test1, 2 AS test2 FROM dual)
      LOOP
        v_menu.test1 := func_cur.test1;
        v_menu.test2 := func_cur.test2;
        PIPE ROW (v_menu);
      END LOOP;
    END getTable;
END KBMIN_TEST;

위의 첫번째 소스는 package의 spec이고 두번째 소스는 body입니다.
 

1
SELECT * FROM TABLE(kbmin_test.getTable());

function을 호출해서 table을 보려면 위와같이 콜해주면 됩니다. pipelined를 이용해서 table형태 반환하는 function을 만드려고 검색하는데 보기 쉬운 예제가 잘 없길래 적당히 만들어 봤어요.


결과 화면입니다.

 

 

+ Recent posts