0

我需要一种方法来临时存储和使用从 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 中执行此操作的更好方法吗?

提前致谢。

4

1 回答 1

1

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

但是,如果临时数据很大(超过几千行)和/或您需要能够执行类似的操作,SELECT * FROM your_temp_data...那么最好使用 Oracle 的全局临时表。GTT 是一个用于保存数据的表,这些数据只能持续到单个事务或完整会话(即,只要您连接到数据库)。文档herehere,以及关于它们的另一篇文章here

分享和享受。

于 2014-08-29T22:30:25.417 回答