【问题标题】:how to select dynamically in select * from <table_name> partiton (Partition name)?如何在 select * from <table_name> 分区(分区名称)中动态选择?
【发布时间】:2015-04-28 16:26:17
【问题描述】:

我有一张有几个分区的大桌子。我的分区名称如下:

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 命令未正确结束 00933. 00000 - “SQL 命令未正确结束” *原因:
*行动: 行错误:2 列:28 语法错误,预期: 标识符

【问题讨论】:

  • 为什么不使用where 子句来选择正确的分区?在这种情况下,优化器通常非常擅长分区修剪。

标签: sql oracle partitioning


【解决方案1】:

试试这个:-

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

因为在每个子查询选择后,您必须提及数据集名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2012-03-16
    相关资源
    最近更新 更多