這將返回你所需要的所有表:
select table_name
from user_tables
where table_name like 'A__';
由此看來,你可以建立一個動態的SQL語句:
select listagg('select * from '||table_name,' union all ') within group(order by table_name)
from user_tables
where table_name like 'A__'
這實際上返回一個包含所有表和工會的SQL語句:
select * from A01 union all select * from A02 union all select * from A03
最後通過本地動態SQL執行此。你可以在PL/SQL,所以你需要一個功能:
create function getA
query varchar2(32000);
begin
select listagg('select * from '||table_name,' union all ') within group(order by table_name)
into query
from user_tables
where table_name like 'A__';
open res for query;
return res;
end;
注意你手動做什麼,基本上是所謂的分區,和Oracle有一個超級巨大的支持已經可用於該出的盒子。即你可以擁有一個看起來像超級巨大的表,但是從技術上說,它存儲爲一組較小的表(和較小的索引),按分區標準進行分割。例如,如果您有數百萬條支付記錄,則可以按年分區,這樣一張物理表只包含一組合理的數據。儘管如此,您可以自由選擇,如果您打算從其他分區獲取數據,Oracle會負責將這些數據拉入。
Sir Aspirant,抱歉沒有澄清我想要的結果輸出。那麼我發佈了關於我的話題的增加信息。順便說一下,先生,我沒有得到任何輸出。 :| – 2013-03-11 02:58:09
@GlennHolmgren - 如果你沒有得到任何輸出,那麼這意味着你沒有任何以'A'開始的表格。也許你的規格是錯誤的? – APC 2013-03-11 09:09:03
我確實有A和T的表格,我甚至嘗試過T ...也許我犯了一些錯誤...我會在稍後檢查,感謝主席先生的幫助。 – 2013-03-13 00:53:09