[oracle 예제] 함수(function) 생성 및 복수행 데이터 한 행 출력 예제 :: 소림사의 홍반장!

* RTRIM( text, ',' ) : 오른쪽의 ',' 문자를 잘라냄

* XMLAGG() : 복수행의 데이터를 한 행으로 붙여서 출력

* XMLELEMENT( 태그값, 값, 연결값 ) : <태그값>값</태그값>

EXTRACT('//text()') : 태그사이의 text 값 추출




CREATE OR REPLACE FUNCTION POSWIS.GET_OBJAUTH_VALUES (

       ccompany              IN VARCHAR2                --입력되는 인자값1

     , cobj_id    IN VARCHAR2                --입력되는 인자값2

)RETURN VARCHAR2 IS

     v_return VARCHAR2(50);


BEGIN


SELECT 

    RTRIM(

        XMLAGG(

            XMLELEMENT(x,NVL(OBJ_VALUE_SET,'F'),',') 

                ORDER BY LV_CODE

            ).EXTRACT('//text()'),','

          ) OBJ_VALUE_SET

    INTO v_return      

FROM 

    (

    SELECT * FROM TB_S07_020OBJAUTH020

    WHERE COMPANY = ccompany

    AND OBJ_ID = cobj_id

    ) B

RIGHT OUTER JOIN TB_S07_020COMPLV010 C

ON B.AUTH_GROUP_CODE = C.LV_CODE

WHERE C.COMPANY = ccompany;

   

RETURN v_return;

     

     EXCEPTION

         WHEN NO_DATA_FOUND THEN

             RETURN '';

         WHEN OTHERS THEN

            RETURN '';

END GET_OBJAUTH_VALUES;




다른 카테고리의 글 목록

Dev. 데이터베이스/SQL 예제 카테고리의 포스트를 톺아봅니다