2015-02-26 1 views
1

У меня есть большой стол с несколькими разделами. мое имя раздела, как показано ниже:как выбрать динамически в выборе * от <table_name> partiton (название раздела)?

P_13931203 
P_13931204 
P_13931205 
P_13931206 

у меня есть выбор для создания имя раздела динамически, как показано ниже:

select 'P_' || to_char(sysdate-1,'yyyymmdd','nls_calendar=persian') from dual; 
example Output: P_13931204 

когда я выбираю, как показано ниже все в порядке:

select * 
from <table_name> partition (P_13931205); 

но когда я выбираю, как показано ниже, я получаю ошибку:

select * 
from <table_name> partition (select 'P_' || to_char(sysdate-1,'yyyymmdd','nls_calendar=persian') from dual); 

ошибка:

ORA-00933: SQL command not properly ended 00933. 00000 - "SQL command not properly ended" *Cause:
*Action: Error at Line: 2 Column: 28 syntax error, expected : identifier

+1

Почему вы не используете предложение 'where', которое выбирает правый раздел? Оптимизатор, как правило, довольно хорош в обрезке разделов в этом сценарии. – Mat

ответ

0

Попробуйте это: -

select * from partition 
(select 'P_' || to_char(sysdate-1,'yyyymmdd','nls_calendar=persian') from dual 
) Dummy_table; 

Beacuse после каждого суб-запроса выбора вы должны упомянуть имя набора данных.