暂时在Oracle中存储多个值

时间:2014-08-29 21:42:36

标签: oracle tsql plsql temporary-objects

我需要一种方法来临时存储并使用从Oracle查询返回的多个值。在SQL Server中,我将我的值存储在临时表中,完成了我的工作,然后删除了表。我发现Oracle等价物并不是明确的。

这是我尝试做的SQL Server示例:

select id into #temp from SomeTable where SomeColumn = 'Some Value'
   :
(do whatever I need to do with #temp data)
   :
drop table #temp

我可以很好地编写SQL Server代码,但在Oracle语法方面几乎一无所知。我一直在阅读各种Oracle参考资料,但它们并没有提供帮助。我确实读过Oracle临时表的工作方式与SQL不同,通常不推荐使用。

我正在研究临时表路线,但是如果有更好的方法来做这个不使用临时表的话,那我就是所有的耳朵。任何人都知道在Oracle中更好的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

与许多事情一样,这取决于。这取决于您要检索的数据量以及您希望如何使用它。如果你没有太多的数据可以使用("太多"意思是,哦,比如说,超过几千行)并且你想要在程序上操纵数据,即在PL中/ SQL过程或脚本,并且您不想使用DML访问它,即您不想说SELECT * FROM your_temp_data...之类的内容而不是将数据加载到PL / SQL集合中,如@ EgorSkriptunoff在上面提到,可能是一个可行的解决方案。

但是,如果临时数据很大(超过几千行)和/或您需要能够执行SELECT * FROM your_temp_data...之类的操作,那么最好使用Oracle的全局温度表。 GTT是一个用于保存数据的表,该数据应该只持续单个事务或完整会话(即只要您连接到数据库)。 Documentation herehere,以及对他们的另一次记录here

分享并享受。