FUNCTION의 SQL을 작성하는 중 WHERE 조건을 조금 더 유동적으로 하고자 TABLE 타입의 OBJECT를 생성하였습니다.
1. 사용하고자 하는 SQL 쿼리
SELECT GUAGEDATE, SUM(SWEIGHT) AS SUM_SWEIGHT
FROM GUGUAGEMST A
WHERE GU_GBN > 0
AND A.GUAGEDATE BETWEEN yymm||'01' AND yymm||'31'
AND A.SMODE <> 'D'
AND A.STATUS = 'O'
AND (('N'= start_gbn and fheapcd like '%')
or ('Y'= start_gbn and fheapcd in
(SELECT COLUMN_VALUE
FROM TABLE(starting_arr)
)
)
)
GROUP BY GUAGEDATE
;
이를 사용하고자 starting_arr를 아래와 같이 선언했습니다.
starting_arr array_get_obj_table := array_get_obj_table();
또 array_get_obj_table 이 테이블 타입을 사용하고자 아래와 같은 object를 만들었습니다.;
create or replace type array_get_obj_table as table of varchar2(30);
제가 궁금한거 이 테이블을 사용하고 할 때 여러 변수를 넣는 것입니다.
starting_arr := array_get_obj_table('2G','3G','4G','5G');
위와 같이 추가하면 4개의 ROW로 잘 만들어집니다만..
저 변수들의 추출을 ARRAY로 진행함에 따라 원하는 구문은
for i in 1..W_START_ARY.COUNT loop
starting_arr := array_get_obj_table(W_START_ARY(i));
end loop;
하는 방식으로 FOR 문을 이용해 추가하고 싶습니다.
저 중간에 선언방식은... 엎어치기가 되고 있습니다.
추가하는 방법이 있을까 싶습니다.
고수님들 부탁드리겠습니다.