select *
from TTT PARTITION (PARTITION_NAME);
위 형태로 PARTITION_NAME이 특정된 값으로 들어가면 조회가 되던데..
위 파티션 NAME을 임의로 지정한 값으로 조회되도록 처리하고자 합니다.
아래 쿼리문으로 특정 날짜값의 PARTITION_NAME 을 얻을 수 있지만.
위 쿼리문에 동적으로 적용하는 방법을 모르겠습니다.
SELECT PARTITION_NAME
FROM ALL_TAB_PARTITIONS
WHERE TABLE_NAME LIKE 'TABLE_HISTORY3'
AND REVERSE(SUBSTR(REVERSE(PARTITION_NAME),1,8)) = '20150331';
select *
from TTT PARTITION (
SELECT PARTITION_NAME
FROM ALL_TAB_PARTITIONS
WHERE TABLE_NAME LIKE 'TABLE_HISTORY3'
AND REVERSE(SUBSTR(REVERSE(PARTITION_NAME),1,8)) = '20150331'
);
이렇게 하면 ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다. 라는 메시지만 나옵니다.
어떻게 동적으로 partition_name으로 제어 할 수 있을까요..?
읽어주셔서 감사합니다.
파티션 테이블의 장점은 굳이 파티션 지정 안해도 조건만 주면 알아서 해당 파티션만 스캔하는거죠.
따라서 파티션 지정 없이 조건절에 파티션키에 대한 조건을 주시면 될 듯 하구요.
굳이, 꼭, 파티션명을 지정해야 한다면? 동적쿼리를 이용해야 하겠지요.
[강정식의 오라클 이야기]Dynamic SQL 사용방법