2015-04-17 72 views
-1

我一直在嘗試檢索一些每日生成的數據,但我無法弄清楚如何在FROM子句(Oracle數據庫)中動態設置日常創建的表名稱, 。每天都會生成一個新表格,其中包含日期戳記作爲表格名稱的一部分。這將用於必須始終從當天表格中取出的每日定期報告(即今天的表格名稱=「STATDB01.A150417001_AINF」,其中「150417」是當前日期)。我怎樣才能從新的日常表中檢索數據,而不必每天更新我的查詢?從動態生成的PL/SQL表中檢索數據

我可以在SELECT語句中動態創建新的表格鬃毛,但我無法讓它在FROM語句中工作。

這裏是我的查詢:

SELECT 
    sta.statist 「Stats」 
    ,sta.indept 「Department」 
    ,sta.ondate 「Date」 
    ,sta.skitem 「SKU」 
    --< I can get this to work in the SELECT clause >-- 
    ,'STATDB01.A'||TO_CHAR(SYSDATE, 'YYMMDD')||'001_AINF' 「New Table」 

FROM 
    --< Calling the table directly works fine >-- 
    --STATDB01.A150417001_AINF sta 
    --< but this does not work in the FROM clause >-- 
    'STATDB01.A'||TO_CHAR(SYSDATE, 'YYMMDD')||'001_AINF' 

WHERE 
    sta.run_stat LIKE '%341%' 

ORDER BY 
    sta.elap_time 
; 
+0

你對數據做了什麼呢?當您選擇數據時,它會轉到哪裏? – nop77svk

+0

輸出作爲每日通過電子郵件發送的報告發送到通訊組列表。 – s1xstr1ng

+0

考慮在表上使用分區。我不認爲這張表包含數百萬行,當你能夠通過郵件發送出去時 –

回答

1

你可以寫(的某些部分)你在PL/SQL報告,構建查詢(包括當天的表名)到字符串變量,並運行查詢字符串爲EXECUTE IMMEDIATE

或者,您可以編寫一個shell腳本並使其輸出帶有當天表名稱的查詢,並將該查詢輸入到sqlplus中(如果需要,然後輸入文件)。

編輯:根據要求,EXECUTE IMMEDIATEexample在行動。

+0

你能舉個例子嗎? – s1xstr1ng

+1

我添加了一個例子。你已經證明你有你需要的其他部分 - 你知道如何連接sql中的字符串,你知道如何生成動態文件名。如果您需要或想要轉到shell腳本路由,我需要知道您要使用的平臺和shell。 –