我有两个oracle查询。我想将这些查询合并为一个。第一个查询总是给出一条记录。
1)。
select distinct partition_name
from all_tab_partitions
where partition_name like 'P_20130110%';
2)。
select feed_id,count(*)
from str_bill_item partition(result of first query)
group by feed_id
order by 1;
实际上str_bill_item表有一些存储数据的分区。该分区的名称存储在all_tab_partition表中。所以我需要从all_tab_partition中获取特定的分区名称,然后在该分区中找到str_billl_item表中的数据。
请帮助我吗?
感谢。
答案 0 :(得分:0)
我看到的问题是你无法在partition()
中使用查询这样的事情怎么样:
DECLARE
rPartName VARCHAR2(100);
BEGIN
select distinct partition_name
INTO rPartName
from all_tab_partitions
where partition_name like 'P_20130110%';
EXECUTE IMMEDIATE 'select feed_id,count(*) from str_bill_item partition('|| rPartName ||') group by feed_id order by 1;';
end;
你可以尝试的是:
运行select而不执行并使用
DBMS_OUTPUT.PUT_LINE('select feed_id,count(*) from str_bill_item partition('|| rPartName ||') group by feed_id order by 1;');
如果在sql查询
中出现相同的错误,则将输出作为select运行如果不执行则有问题。