Database/Oracle
[오라클] 스칼라서브쿼리에서 멀티컬럼, 멀티로우 리턴하기
데브포유
2010. 4. 30. 13:15
반응형
참고 URL = http://scidb.tistory.com/69
아래 순서대로 하면 됩니다.
1. 스칼라서브쿼리가 리턴할 자료형 생성 (C의 구조체 같은 느낌..)
create or replace type dept_type as object
(
dept_cd char(10),
dept_nm name varchar2(50)
);
2. 스칼라서브쿼리에서 리턴받을때 Arrary로 받기때문에 Array Object 생성
create or replace type array_dept
as varray(1) of dept_type ; <--리턴되는 row가 여러개면 varray size를 늘려줌.
3. 쿼리 작성
select *
from (
select a.id
,a.name
,cast(multiset (select dept_cd
dept_nm
from dept b
where b.dept_cd = a.dept_cd
) as array_dept
) as dept_info
from member a
);
// 위의 경우처럼 작성하는 일은 없겠지만 이해를 돕기 위해 쉽게 응용했습니다.
참고 URL에서 처음본 기능인데 너무 인상이 깊어서 정리할겸해서 글을 적어 보았습니다.
아래 순서대로 하면 됩니다.
1. 스칼라서브쿼리가 리턴할 자료형 생성 (C의 구조체 같은 느낌..)
create or replace type dept_type as object
(
dept_cd char(10),
dept_nm name varchar2(50)
);
2. 스칼라서브쿼리에서 리턴받을때 Arrary로 받기때문에 Array Object 생성
create or replace type array_dept
as varray(1) of dept_type ; <--리턴되는 row가 여러개면 varray size를 늘려줌.
3. 쿼리 작성
select *
from (
select a.id
,a.name
,cast(multiset (select dept_cd
dept_nm
from dept b
where b.dept_cd = a.dept_cd
) as array_dept
) as dept_info
from member a
);
// 위의 경우처럼 작성하는 일은 없겠지만 이해를 돕기 위해 쉽게 응용했습니다.
참고 URL에서 처음본 기능인데 너무 인상이 깊어서 정리할겸해서 글을 적어 보았습니다.
반응형