Oracle 临时表 with as、会话级临时表、事务级临时表
在Oracle数据库中,可以使用临时表来存储临时数据,以下是三种创建临时表的方法:
- 使用
WITH AS
子句创建临时表:
WITH temp_table AS (
SELECT * FROM some_table WHERE some_condition
)
SELECT * FROM temp_table;
WITH AS
子句创建的是常规的公用表表达式(CTE),它在查询执行结束后会立即释放。
- 会话级临时表:
CREATE GLOBAL TEMPORARY TABLE temp_table (
column1 datatype,
column2 datatype,
...
) ON COMMIT DELETE ROWS;
会话级临时表在会话结束或事务结束时自动删除行。ON COMMIT DELETE ROWS
表示事务提交后,表中的数据会被自动删除。
- 事务级临时表:
CREATE GLOBAL TEMPORARY TABLE temp_table (
column1 datatype,
column2 datatype,
...
) ON COMMIT PRESERVE ROWS;
事务级临时表在事务提交后不会自动删除数据,只有会话结束时才会被清除。ON COMMIT PRESERVE ROWS
表示事务提交后,表中的数据仍然保留。
请注意,临时表中的数据只对当前会话或事务可见,其他会话或事务不能看到或修改这些数据。临时表通常用于存储较大的、临时的结果集或临时数据。
评论已关闭