Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从子查询中动态获取分区名称?_Sql_Oracle - Fatal编程技术网

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。