Oracle中的臨時表用法彙總
1 語法
在Oracle中,可以創建以下兩種臨時表:
1) 會話特有的臨時表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT PRESERVE ROWS;
2) 事務特有的臨時表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的臨時表雖然是存在的,但是如果insert 一條記錄然後用別的連接登上去select,記錄是空的。
--ON COMMIT DELETE ROWS 說明臨時表是事務指定,每次提交後ORACLE將截斷表(刪除全部行)
--ON COMMIT PRESERVE ROWS 說明臨時表是會話指定,當中斷會話時ORACLE將截斷表。
2 動態創建
測試:
15:23:54 SQL> set serveroutput on
15:24:01 SQL> exec pro_temp('11','22');
11
PL/SQL 過程已成功完成。
已用時間: 00: 00: 00.79
15:24:08 SQL> desc t_temp;
ERROR:
ORA-04043: 對象 t_temp 不存在
3 特性和性能(與普通表和視圖的比較)
臨時表只在當前連接內有效
臨時表不建立索引,所以如果數據量比較大或進行多次查詢時,不推薦使用
數據處理比較複雜的時候時錶快,反之視圖快點
在僅僅查詢數據的時候建議用遊標: open cursor for 'sql clause';