Oracle 建立暫存資料表文法及提示

來源:互聯網
上載者:User

Oracle Temporary Tables(Oracle 暫存資料表)

1. 建立暫存資料表文法

A.ON COMMIT DELETE ROWS 定義了建立事務級暫存資料表的方法

CREATE GLOBAL TEMPORARY TABLE TABLE_NAME

-----(COUMNS …)

-----AS SELECT … FROM TABLE…

ON COMMIT DELETE ROWS;

當前session發出commit/rollback命令,則該事務周期發生的所有資料自動被Oracle刪除(Oracle truncate table)。但不影響任何其他session的資料。

B.ON COMMIT PRESERVE ROWS 定義了建立會話級暫存資料表的方法

CREATE GLOBAL TEMPORARY TABLE TABLE_NAME

-----(COUMNS …)

-----AS SELECT … FROM TABLE…

ON COMMIT PRESERVE ROWS;

當前session結束(使用者正常退出 / 使用者不正常退出 / Oracle執行個體崩潰),Oracle對這個會話的中發生的資料進行刪除(Oracle truncate table)。但不影響任何其他session的資料。

2. 特點說明

A.暫存資料表資料自動清空後,但是暫存資料表的結構以及中繼資料還儲存在使用者的資料字典中。表的定義對所有的會話可見

B.暫存資料表不需要DML鎖

C.可以索引暫存資料表和在暫存資料表基礎上建立視圖

D.在暫存資料表上的索引也是臨時的,也是只對當前會話或者事務有效

E.暫存資料表可以擁有觸發器

F.可以用export和import工具匯入匯出暫存資料表的定義,但是不能匯出資料

3. 提示

A.當某一個SQL語句關聯的表在2張及以上,並且和一些小表關聯。可以採用將大表進行分拆並且得到比較小的結果集合存放在暫存資料表中

B.程式執行過程中可能需要存放一些臨時的資料,可以將這類資料放在暫存資料表裡非常方便

C.預存程序中用到暫存資料表:

1> 在建立暫存資料表前,應先加上對錶名的判斷

Select count(*) into v_count from user_tables where table_name = ‘XXX’;

If v_count=0 then

Create global temporary table …

在預存程序結束處,應該記得刪除表

execute immediate 'drop table t_temp';

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.