oracle 臨時表的使用


在oracle中,臨時表分為會話級別(session)和事務級別(transaction)兩種。

會話級的臨時表在整個會話期間都存在,直到會話結束;事務級別的臨時表數據在transaction結束后消失,即commit/rollback或結束會話時,會清除臨時表數據。

  1、事務級臨時表  on commit delete rows;      當COMMIT的時候刪除數據(默認情況)
  2、會話級臨時表  on commit preserve rows;  當COMMIT的時候保留數據,當會話結束刪除數據

 

1.會話級別臨時表

會話級臨時表是指臨時表中的數據只在會話生命周期之中存在,當用戶退出會話結束的時候,Oracle自動清除臨時表中數據。

創建方式1:

create global temporary table temp1(id number) on commit PRESERVE rows;

insert into temp1values(100);

select * from temp1;

創建方式2:

create global temporary table temp1 ON COMMIT PRESERVE ROWS    as  select id from 另一個表;

select * from temp1;

這個時候,在當前會話查詢數據就可以查詢到了,但是再新開一個會話窗口查詢,就會發現temp1是空表。

2.事務級別的臨時表

創建方式1:

create global temporary table temp2(id number) on commit delete rows;

insert into temp2 values(200);

select * from temp2;

創建方式2:

create global temporary table temp2 as select  id  from 另一個表;(默認創建的就是事務級別的)

select * from temp2;

這時當你執行了commit和rollback操作的話,再次查詢表內的數據就查不到了。

 

3.oracle的臨時表創建完就是真實存在的,無需每次都創建。

若要刪除臨時表可以:

truncate table 臨時表名;
drop table 臨時表名;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM