CREATE GLOBAL TEMPORARY TABLE table_name
( column datatype [DEFAULT expr] [NULL | NOT NULL], ... )
ON COMMIT { DELETE | PRESERVE } ROWS;
多使用者並行互不干擾,甚至鎖定臨時表也不會阻塞其他會話使用各自的臨時段。
SQL Server 習慣 SELECT ... INTO #temp FROM ... 執行期建表,Oracle 嚴禁運行期 DDL(資源消耗極大、產生大量字典物件)。正確做法:
INSERT INTO gtt SELECT ... FROM ...若在存儲過程中反覆 CREATE GLOBAL TEMPORARY TABLE,每次調用都會在字典新增一個物件,長期運行導致字典膨脹、解析變慢、甚至 ORA-00600。若不手動 DROP,殘留物件永久駐留。