[ ◎ 여러 레코드 Return하기 ]

                   [  ◎ 여러 레코드 Return하기 ]     

 
☞ 생성 방법

 

Oracle Function에서 대부분 한개의 값을 반환하는 경우가 대부분이다. 

하지만 한 개의 값을 반환할 경우 제약을 받는 경우가 종종 생긴다.(사실 처음이다.) 

우선 Table 단위나 Row_Type단위로 값을 리턴 할 경우  

그에 맞는 임시 Table (TYPE)을 만들어 주어야 한다.

 

1. Oracle Type만들기
 create or replace TYPE SLP AS OBJECT (
        CD VARCHAR2(100),
        CD_NM VARCHAR2(200)
 );

그런 다음 사용을 하려는 객체를 선언해주어야 한다.

 

2. 임시 TABLE(TYPE) 객체 만들기

create or replace TYPE SAMPLE_TABLE AS TABLE OF SLP;

이제 사용할 Function을 만들면 끝이다.

 

3. Functoin만들기

create or replace FUNCTION F_GET_SAMPLE_NAME(
      COMPANY_CD IN VARCHAR2
) RETURN SAMPLE_TABLE pipelined IS
        aaa
SLP := SLP(NULL, NULL);  -- 초기화(SAMPLE 구조체를 aaa로 선언)
 BEGIN
      FOR bbb IN (SELECT CD, CD_NM
                    FROM XFRMD2C
                  ) LOOP
          aaa.cd          := bbb.cd;
          aaa.cd_nm    := bbb.cd_nm;
          
PIPE ROW(aaa);  -- 검색값을 저장
      END LOOP;
      RETURN;
   EXCEPTION WHEN NO_DATA_FOUND THEN
       BEGIN
           aaa:= SLP('', '');
           
pipe row(aaa);
       END;
       RETURN;
  END
;

 

   
   
   

참고URL : http://javanara.tistory.com/19

Posted by 농부지기
,