【发布时间】:2011-04-10 14:07:24
【问题描述】:
在 Oracle 中,您可以使用以下方式创建临时表:
CREATE GLOBAL TEMPORARY TABLE temp_table (
field1 NUMBER,
field2 NUMBER
)
ON COMMIT DELETE ROWS;
... 这可能非常漂亮,因为这会创建一个所有人都可以看到的表,但是插入到表中的数据只有他或她才能看到。此外,该数据会在交易或会话结束时自动删除(取决于其声明),而其他所有人的临时数据都不会受到伤害。
但是,在 SQL Server 中,您可以使用以下命令创建临时表:
CREATE TABLE #temp_table (field1 INT, field2 INT);
...据我了解,它在本质上和功能上都与 Oracle 的实现不同。此临时表仅对您可见,并在使用后立即删除(该表)。
SQL Server 中是否有能力模仿上述 Oracle 行为?还是使用临时数据的唯一方法是必须在每次工作迭代中重复创建临时表?
【问题讨论】:
-
您能解释一下为什么要模仿 SQLServer 中的 Oracle 行为吗?是否只是为了避免执行 CREATE TABLE 语句的要求?
-
@Mark ~ 嗯,主要是这样。但是,如果我正在处理 (1) 重复的临时数据插入,(2) 具有通常相同的数据格式和字段,(3) 并且是用户唯一的(即数据对用户会话来说是私有的),它只会产生更多根据 Oracle 的实现来处理表中的所有内容。 :)
标签: sql oracle sql-server-2008