2016-04-20 68 views
0

Oracle有什麼方法可以創建一個全局臨時表,並在會話結束後被刪除?我知道如何創建臨時表,條件是行被刪除,但對我來說是不夠的。Oracle全球臨時表

+2

你可以,但(它必須是手動的),但它不是一個好主意,即時創建對象。也許你可以解釋爲什麼你認爲你需要這樣做。如果你來自另一個支持這種方法的DBMS,則可能需要針對Oracle的另一種方法 - 可能是子查詢因子分解,也可能是集合,也可能是其他方法。這真的取決於你在做什麼以及你想要解決什麼問題。 –

+1

請解釋爲什麼這對你來說「不夠」。你正試圖解決的**真正**問題是什麼? –

+0

問題是我只創建了很多臨時表,以便可以從中導出數據,並且在一段時間後,我的模式變得充滿了稱爲「temp」,「temp1」等的不必要的表。如果Oracle有類似的東西SAS中的「工作庫」在斷開連接後完全消失。 –

回答

0

這似乎是一個Postgres的方式。不幸的是,這在Oracle中是不可能的。嘗試使用PL/SQL Collections and Records

+0

爲什麼這是「不幸」?全局臨時表被保留(這是臨時數據)是一個特徵。 –

+0

舉個例子:當你有創建新的永久對象(表&&類型)的限制時。在這種情況下,您將使用集合,而不用SQL訪問:**來自表(集合)**。這真的很不方便。 – saphsys

+0

爲什麼你會限制創建新的永久物件?對於那些對你施加愚蠢限制的人來說,這是個問題,而不是Oracle設計GTT的方式。 –