안녕하세요.
임시테이블을 사용하지 않고 동일한 결과를 만들수 있는지 질문드립니다.
V_END_SEQ NUMBER(2);
V_ST_SEQ NUMBER(2);
CURSOR C1 IS
SELECT '7' FROM DUAL ;
--> 결과 : 숫자를 반환 : EX) 7
CURSOR C2 IS
SELECT '1' FROM DUAL ;
--> 숫자를 반환 : EX) 1
type array_t is varray(40) of varchar2(100);
array array_t := array_t(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); --> 숫자안에 포함될 경우의 수 지정 최대 20
BEGIN
V_SQL :=' TRUNCATE TABLE TMP_TABLE ';
EXECUTE IMMEDIATE V_SQL;
-- 임시테이블을 클리어
OPEN C1; OPEN C2; -- 1 과 7
LOOP
FETCH C1 INTO V_END_SEQ ; FETCH C2 INTO V_ST_SEQ ;
EXIT WHEN C1%NOTFOUND;
for i in V_ST_SEQ..V_END_SEQ loop -- 1에서 7까지의 반복
V_SQL :='INSERT INTO TMP_TABLE SELECT '||array(i)||' FROM DUAL';
EXECUTE IMMEDIATE V_SQL;
COMMIT;
end loop;
-- 결과 TMP컬럼 :
--- TBXZZC099 : TMP ---
1
2
3
4
5
6
7
-----
위와 같이 임시 테이블 없이.. 연속하는 숫자의 값을 구하고 싶습니다.
감사합니다. ㅜㅜ
수고하세요