![]() |
1
9
正如您所发现的,SQL Server和Oracle临时表有根本不同。 在Oracle中,全局临时表是存储临时会话特定(或事务特定)数据的永久对象。 在SQL Server中,临时表是存储临时数据的临时对象,其中,临时表存储会话本地的数据,临时表存储全局数据。(我从未需要SQL Server全局临时表,也不知道它们解决了什么问题。)如果临时表是在存储过程中创建的,则在存储过程退出时将删除它。否则,会话关闭时将删除它。 不,实际上没有办法让SQL Server模仿Oracle。您可以使用一个带有额外列的普通表来存储会话ID。但是,对于较少的日志记录,您不会得到临时表的优势。你必须手动删除临时数据。处理从过早退出的会话中清除的问题。
编辑:
Oracle和SQL Server的另一个区别是,SQL Server允许将DDL与其他语句包装在事务中。因此,如果需要将临时表用作更大事务的一部分,那么
|
![]() |
2
1
这不是主题,但您是否知道在SQL Server中可以创建这样的临时表:
|
![]() |
3
1
当需要合并来自具有公共合并字段的不同源的数据时,SQL中的临时表可能非常有用,但在合并之前需要求和金额,以便比较两个源的净合计。在一个有用的金融体系中。当我们从SQL Server迁移到Oracle时,我很失望,因为我失去了这个功能。 下面的示例用于PeopleSoft财务实现。一旦在两者之间运行了接口,预算模块(KK表)和总帐(日记账)的资金余额应相同。下面的查询从KK表中按资金汇总预算金额,并将其存储在临时表中,然后从总帐中按资金汇总相应的金额,然后合并两个预汇总的数据表,以允许比较两个来源的每个资金的净金额,并且仅当以下两个来源的金额之间存在差异时才列出结果:基金。在这种情况下,预算和总账模块不同步。这实际上是一个非常优雅的解决方案,不需要为这个查询/报告创建一个可供其他人使用的全局临时表。 我希望有人能发现这个有用。当时它帮助了我。
|
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |