我正在使用Oracle 11g全局临时表,因为我需要一个解决方案,我可以将行添加到临时表以进行连接,并且我只希望将行添加到临时表中包括Oracle Connection/session。我在Oracle中使用全局临时表,因为我希望表存在于会话之间,所以每次创建查询时都不必重新创建表。这工作很好。全球临时表 - SQL Server与Oracle
的My Oracle表的定义如下:
CREATE GLOBAL TEMPORARY TABLE book_id_temp
(
book_id RAW(32)
)ON COMMIT DELETE ROWS;
我有相同的数据库结构也在SQL Server 2008 R2侧,并需要在SQL Server中的一个类似的解决方案。我想:
- 打开SQL连接(ADO.NET)
- 中的事务:
- - 添加行临时表。
- - 在另一个表上加入它们,选择结果
- - 只有在此会话期间添加的行才会包含在联接中。另一个线程可能在同一个临时表上执行。那么当地的临时表可能是最好的吗?
- 回滚整个交易。
从我读过的SQL Server中的全局临时表中,这些表在连接结束后存在,就像常规表一样,并且像Oracle中的全局临时表一样。但是,数据的范围并不明确。只有创建行的SQL Server会话才能访问它,就像在Oracle中一样? SQL Server全局临时表的数据可访问性是什么?你有一个替代方案来达到我的目标吗?
Oracle全局临时表也需要截断,取决于操作...我会使用SQL Server中临时表的一个表变量给定的选择,但你需要解释您在连接丢失时获得持久性的需求以获得真正的帮助。为什么不制作一个真正的桌子? – 2012-01-18 15:38:35
我希望表格在会话之间存在,所以每次创建查询时都不必重新创建表格。 – 2012-01-18 15:41:10
它*听起来像是你想要一个本地临时表,而不是全局临时表。你能描述一下你所需要的语义吗? – 2012-01-18 15:46:27