在Oracle中的临时表?

16 浏览
0 Comments

在Oracle中的临时表?

我有一个SQL查询,它生成一个我想要多次重复使用的表。在T-SQL中,我会创建一个临时表(#temp),在Oracle SQL中有什么等效的方法吗?谢谢。

0
0 Comments

在Oracle中,临时表的工作方式与SQL Server中的不同。我建议阅读Oracle文档中相应的章节。要重复使用表的内容,在提交时使用"preserve rows"子句。

临时表在Oracle中的工作方式与SQL Server中的临时表不同。在Oracle中,临时表是会话特定的,意味着它们只在当前会话中存在,并且在会话结束时自动删除。而在SQL Server中,临时表是在所有会话中共享的,直到它们被显式删除或服务器重启。

为了重用Oracle临时表中的内容,可以使用"preserve rows"子句。这个子句可以在提交事务时保留临时表的行。这意味着即使提交事务,临时表的内容仍然保持不变,可以在后续的查询中使用。

下面是一个示例,展示了如何在Oracle中使用临时表和"preserve rows"子句:

 
-- 创建临时表
CREATE GLOBAL TEMPORARY TABLE temp_table
(
  id   NUMBER,
  name VARCHAR2(50)
)
ON COMMIT PRESERVE ROWS;
-- 插入数据
INSERT INTO temp_table VALUES (1, 'John');
INSERT INTO temp_table VALUES (2, 'Jane');
-- 提交事务
COMMIT;
-- 查询临时表
SELECT * FROM temp_table;

在上面的示例中,创建了一个全局临时表"temp_table",并插入了两行数据。然后,提交了事务。由于使用了"preserve rows"子句,在提交事务后,临时表的内容仍然存在。最后,通过查询临时表,可以查看到插入的数据。

,在Oracle中,临时表是会话特定的,可以使用"preserve rows"子句来在提交事务后保留临时表的内容。这样可以实现在会话中重复使用临时表的目的。

0