繁体   English   中英

从子查询动态获取分区名称?

[英]Get Partition name from subquery dynamically?

我需要从该表上创建的最新分区中获取信息。 动态获取而不是使用如下名称

select *
from dw.DWT509_DADOS_NCLIE partition ('Partition Name').

select *
from dw.DWT509_DADOS_NCLIE partition 

(Select PARTITION_NAME
                  From (
                        Select PARTITION_POSITION, PARTITION_NAME, 
                               Max(PARTITION_POSITION) over (partition by TABLE_NAME) 
                            As MAX_P
                        From SYS.all_tab_partitions
                        Where TABLE_NAME='DWT509_DADOS_NCLIE'
                              --And Nvl(NUM_ROWS,0) = 0
                       )
                  Where PARTITION_POSITION = MAX_P);

我认为您将必须使用动态sql字符串...

declare
  l t.x%type;
  stmt varchar2(1000);
  part varchar2(30);

begin
  select max(x) into l from t;
  stmt := 'select max(uo.subobject_name)
from   t partition for (' || l || '), user_objects uo
where  dbms_rowid.rowid_object(t.rowid) = uo.data_object_id';

  execute immediate stmt into part;

  dbms_output.put_line(part);
end;
/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM