在SQL Server的存储过程中, 可以非常方便地使用临时表#TempTable, 你可以随意地将数据插入到临时表, 也可以将临时表的记录作为存储过程的结果集. #TempTable用过后, 它就干干净净地消失了, 包括表的structure.
而Oracle的临时表是global temporary table, 这表明它的定义是persistent, 只是内容是临时的. 除此之外, 临时表还有几个特点:
1. 临时表是不能加logging等选项, 所以它的redo log和I/O和普通表相比都非常小,
2. 不能为临时表指定tablespace, 临时表一定是在TEMPORARY tablespace中.
定义一般Heap表的格式通常是: CREATE TABLE Table_1(col_1 number) TABLESPACE USERS;
而定义临时表的格式通常是:
CREATE GLOBAL TEMPORARY TABLE Temp_Table_1 (a NUMBER) ON COMMIT
PRESERVE ROWS; --临时表的内容在整个Session中一直保持, 即使是一个transaction结束.
或者是:
CREATE GLOBAL TEMPORARY TABLE Temp_Table_1 (a NUMBER) ON COMMIT
DELETE ROWS; --临时表的内容仅仅在一个transaction中保持.
1 comment:
Thank you to share
Post a Comment