我正在努力将临时表(SQL服务器)迁移到oracle

时间:2017-03-17 11:31:19

标签: sql-server oracle

我正在努力将临时表(SQL服务器)迁移到oracle。大多数情况下,oracle不考虑在存储过程中使用临时表,但是在sql server中,它们使用临时表来获取小的读取记录并且也操作它们。 如何克服这个问题。我也在搜索一些关于将临时表迁移到oracle的在线文章,但是我没有清楚地解释我的期望。 我得到的信息包括使用内联视图,WITH子句,引用游标而不是临时表。我完全糊涂了。 请建议我,在这种情况下可以使用内联视图,WITH子句,引用游标。 这可能有助于提高我的知识水平并做好工作。

一如既往地感谢您在帮助新手方面所付出的宝贵时间。 谢谢 Alsatham hussain

1 个答案:

答案 0 :(得分:0)

像许多问题一样,答案是“它取决于”。一些事情

  1. Oracle的“temp”表称为GLOBAL TEMPORARY TABLE(GTT)。与大多数其他供应商的TEMP表不同,它们的定义是全局的。 SQL Server(和其他)中的脚本或程序将创建临时表,临时表将在会话结束时消失。这意味着脚本或程序可以由多个用户重新运行或同时运行。但是,这不适用于GTT,因为GTT将在会话结束时保持存在,因此尝试创建GTT的下一次运行将因为已存在而失败。 因此,一种方法是预先创建GTT,就像其他应用程序表一样,然后将程序更改为插入到gtt中,而不是创建它。
  2. 正如其他人所说,使用CTE Common Table Expression)可能会起作用,购买它取决于首先使用TEMP表的动机。临时表的一个优点是它在一系列步骤中提供了“检查点”,并允许在中间临时数据集上收集统计数据;它是一个复杂的处理集。 CTE没有提供这种福利。

  3. 也可以使用其他“中间”对象,例如集合,但它们必须“被管理”,并不能真正提供能够收集它们的统计数据的任何优点。

    < / LI>

    正如我在开头所说,你选择的解决方案在某种程度上取决于原始临时表的动机。