안녕하세요..
이번에 새로 가입하게 된 초짜 취준생입니다..
다름이 아니라,
제가 이런 테이블들을 가지고 있습니다.
D_20200101, D_20200102 .... D_20200831
이렇게 수많은 테이블들이 있는데, 웹에서 만약 날짜 2개를 받아와서 그 숫자 사이만큼 테이블들을 UNION ALL하는
프로시저를 만들고 싶습니다. 즉 그 날짜 사이들의 테이블들을 UNION ALL 하고 싶다는 얘기입니다!
이게 한 두개면 상관 없는데, 수십개가 되면 감당이 안되가지고 프로시저로 만들려고 하는데요!
그런데 도무지... 떠오르지가 않네요.
DB를 깊게 배우진 않아서 더 그런 것 같습니다.
CREATE OR REPLACE PROCEDURE PROC_UNION_TBL
(
START_DATE IN VARCHAR2,
END_DATE IN VARCHAR2
)
IS
START_DATE VARCHAR2 := 20200101;
END_DATE VARCHAR2 := 20200102;
CNT NUMBER := (TO_DATE(END_DATE) - TO_DATE(START_DATE));
SQL_QUERY VARCHAR2(MAX);
BEGIN
FOR i IN 1..CNT
LOOP
SQL_QUERY := 'SELECT * FROM DAILY_'||START_DATE||' UNION ALL ';
START_DATE := START_DATE + 1;
END LOOP;
END PROC_UNION_TBL;
/
이런 식으로 모양만 따라했는데 저런 String을 만들어서 어떻게 또 실행할까 고민도 되고,
저게 좀 많이 틀려있는 것도 압니다.
염치 없지만 제가 프로젝트 시간이 별로 없어서, 여기있는 분들께 많은 팁좀 얻고 싶습니다.
(제가 지식이 많지 않아서 막 요렇게 저렇게 설명만 해주시면 잘 못알아들을 수 있어요...
그냥 비슷한 코드만 던져 주셔도 큰 도움이 됩니다. 제가 공부해서 응용해보겠습니다...)
데이터베이스는 오라클 12c 입니다.