2016-12-06 122 views
0

我想在過程中創建一個臨時表,並在該過程中僅在完成執行'SP'後才使用該表,然後自動刪除該表,那麼我該怎麼做?創建臨時表

+0

檢查動態sql? – GurV

+2

我建議你使用全局臨時表而不是這種方法。 GTT中的數據特定於會話。您必須在程序外創建表格一次,並在程序中使用它。 https://oracle-base.com/articles/misc/temporary-tables –

+0

如果兩個會話想要同時運行該過程會怎麼樣?你會有一些代碼在嘗試創建它之前檢查你的表是否存在?如果其他會話可能會使用它,您將如何知道它是否可以被刪除?另外,你的意思是「刪除」或「放」嗎? –

回答

0

您可以使用動態SQL

Execute immediate 'create table...'

然後你就可以在同樣的方式做你的STAF

畢竟所有的人,你可以刪除表

execute immediate 'drop table....

0

你你可以動態SQL

execute immediate 'create table my_table (/* cols here */)'; 

,並在年底:

execute immediate 'drop table my_table'; 

另外值得一提的是,你不能同時直接使用臨時表與表不存在在編譯時編譯代碼。您必須使用動態SQL才能使用它。

+0

我可以知道爲什麼downvote嗎? – GurV