Sql 从子查询中动态获取分区名称?
我需要从该表上最近创建的分区中获取信息。动态获取,而不是使用下面的名称Sql 从子查询中动态获取分区名称?,sql,oracle,Sql,Oracle,我需要从该表上最近创建的分区中获取信息。动态获取,而不是使用下面的名称 select * from dw.DWT509_DADOS_NCLIE partition ('Partition Name'). select * from dw.DWT509_DADOS_NCLIE partition (Select PARTITION_NAME From ( Select PARTITION_POSITION,
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;
/
我认为您将不得不使用动态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;
/
非常感谢你。我认为可以使用子查询获得所需的分区名称:而不是“从[TABLE]分区('name')中选择*”,而是“从[TABLE]分区中选择*(子查询获得分区名称)。所以这根本不可能?有可能从函数中得到它吗?像“从[TABLE]分区(Function_GetPartitionName('Owner','TableName')中选择*”?非常感谢。我认为可以使用子查询来获得所需的分区名称:使用“从[TABLE]分区('name')中选择*”,而不是“从[TABLE]分区中选择*”(子查询来获取分区名称)。那么这根本不可能?有可能从函数中获取它吗?比如“从[TABLE]分区(Function_GetPartitionName('Owner','TableName')中选择*”?非常感谢Barbaros对格式化的帮助。Manny Thank's。非常感谢Barbaros对格式化的帮助。Manny Thank's。