사용법은
rowtocol('쿼리문', '구분자') 형태로 날려주면 됨.
예를 들어
위와 같은 느낌으로 하면... 1과 2번에 해당하는 "미국>일본" 형태로 묶어준다는 사실..
근데 인터넷에서 구한건데..맨앞에서도 >가 붙는거 보니 수정이 필요한듯 ㄱ-
펑션코드
create or replace
FUNCTION rowtocol(
p_slct IN VARCHAR2,
p_dlmtr IN VARCHAR2 DEFAULT ',' )
RETURN VARCHAR2
EXCEPTION
WHEN OTHERS THEN
lc_str := SQLERRM;
IF c_dummy%ISOPEN THEN
CLOSE c_dummy;
END IF;
RETURN lc_str;
END;
rowtocol('쿼리문', '구분자') 형태로 날려주면 됨.
예를 들어
--------------------------
catecode | catename
--------------------------
1 미국
2 일본
3 영국
4 한국
5 러시아
---------------------------
select ...
cate_id1
,cate_id2
,rowtocol(' select catename from TB_CATEGORY where id in (''1'', ''2'') ' , '>' ) as name;
from
TB_BBS
catecode | catename
--------------------------
1 미국
2 일본
3 영국
4 한국
5 러시아
---------------------------
select ...
cate_id1
,cate_id2
,rowtocol(' select catename from TB_CATEGORY where id in (''1'', ''2'') ' , '>' ) as name;
from
TB_BBS
위와 같은 느낌으로 하면... 1과 2번에 해당하는 "미국>일본" 형태로 묶어준다는 사실..
근데 인터넷에서 구한건데..맨앞에서도 >가 붙는거 보니 수정이 필요한듯 ㄱ-
펑션코드
create or replace
FUNCTION rowtocol(
p_slct IN VARCHAR2,
p_dlmtr IN VARCHAR2 DEFAULT ',' )
RETURN VARCHAR2
AUTHID CURRENT_USER AS
TYPE c_refcur IS REF CURSOR;
lc_str VARCHAR2(4000);
lc_colval VARCHAR2(4000);
c_dummy c_refcur;
l number;
lc_str VARCHAR2(4000);
lc_colval VARCHAR2(4000);
c_dummy c_refcur;
l number;
BEGIN
OPEN c_dummy FOR p_slct;
OPEN c_dummy FOR p_slct;
LOOP
FETCH c_dummy INTO lc_colval;
EXIT WHEN c_dummy%NOTFOUND;
lc_str := lc_str || p_dlmtr || lc_colval;
END LOOP;
FETCH c_dummy INTO lc_colval;
EXIT WHEN c_dummy%NOTFOUND;
lc_str := lc_str || p_dlmtr || lc_colval;
END LOOP;
CLOSE c_dummy;
RETURN SUBSTR(lc_str,2);
EXCEPTION
WHEN OTHERS THEN
lc_str := SQLERRM;
IF c_dummy%ISOPEN THEN
CLOSE c_dummy;
END IF;
RETURN lc_str;
END;