2016-12-06 137 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