Ste*_*bbi 5 sql-server oracle temp-tables
我正在使用Oracle 11g全局临时表,因为我需要一个解决方案,我可以在临时表中添加行以进行连接,并且我只希望包含添加到临时表中的行以连接Oracle Connection/session.我在Oracle中使用全局临时表因为我希望表在会话之间存在,所以每次创建查询时都不必重新创建表.这很好.
我的Oracle表定义如下:
CREATE GLOBAL TEMPORARY TABLE book_id_temp
(
book_id RAW(32)
)ON COMMIT DELETE ROWS;
Run Code Online (Sandbox Code Playgroud)
我在SQL Server 2008-R2方面也有相同的数据库结构,并且在SQL Server中需要类似的解决方案.我想要 :
根据我在SQL Server中读到的全局临时表,这些表在连接结束后存在,如常规表,以及Oracle中的全局临时表.但是,目前尚不清楚数据的范围.只有创建行的SQL Server会话才能访问它,就像在Oracle中一样吗?使用SQL Server全局临时表的数据的可访问性是什么?你有建议选择实现我的目标吗?
Oracle中的临时表是永久对象,用于保存会话本地的临时数据.SQL Server中的临时表是临时对象.
我发现本地临时表或表变量最接近于Oracle的全局临时表,最大的区别是你必须每次都创建它.
通常,在类似你的情况下,步骤3,向临时表添加行,将通过执行select ... into #temp_table_name ....(相当于Oracle create table ... as select ...)来完成http://msdn.microsoft.com/en-us/library/ms188029.aspx
此外,您不能在存储过程中执行以下操作:(伪代码.)
begin proc
call another proc to create local temp table.
use temp table
end proc
Run Code Online (Sandbox Code Playgroud)
从创建它们的存储过程返回时,将销毁本地临时表.
更新2014-10-14:本地临时表的行为在SQL Server的Parallel Data Warehousev版本中有所不同.临时表在从创建它们的存储过程退出时不会被删除,而是在会话的其余部分继续存在.观察到此行为:
select @@version
Microsoft SQL Server 2012 - 10.0.5108.1 (X64) Jun 24 2014 20:17:02 Copyright (c) Microsoft Corporation Parallel Data Warehouse (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6281 次 |
| 最近记录: |