oracle存儲過程中的臨時表是什么

oracle中,存儲過程的臨時表是一個用于臨時存儲數據的表;當事務或者會話結束的時候,臨時表中的數據就會被數據庫自動清空,臨時表可以根據生命周期的不同分為事務級臨時表和會話級臨時表,創建語法為“create global temporary table 臨時表名 on commit preserve/delete rows”。

oracle存儲過程中的臨時表是什么

本教程操作環境:windows10系統、Oracle 12c版、Dell G3電腦。

oracle存儲過程中的臨時表

臨時表語法:

create?global?temporary?table?臨時表名?on?commit?preserve/delete?rows?? --preserve:SESSION級的臨時表,delete:TRANSACTION級的臨時表.

1. 作用:用來 ‘臨時’ 存儲數據

? ?(1) 當一個事務或會話結束的時候,這個臨時表中的 ‘數據’ 會被數據庫自動清空

? ?(2) 但 ‘表結構’ 依舊保留

2. 分類: ‘生命周期的不同’

? ?(1) 事務級臨時表: on commit delete rows;? ?commit 時 ‘刪除’ 記錄(默認)

? ?(2) 會話級臨時表: on commit preserve rows; commit 時 ‘保存’ 記錄,結束會話時 ‘刪除’ 記錄

3. 注意

? ?(1) 臨時表處理的效率高于普通表

? ? ? ? 不記錄 ‘日志’

? ? ? ? 只能當前用戶使用,不會產生 ‘鎖’

? ?(2) 和普通表操作方式一樣

4. 以下測試中,創建臨時表后,信息查詢

oracle存儲過程中的臨時表是什么

SESSION級的臨時表數據在整個SESSION都存在,直到結束此次SESSION;而TRANSACTION級的臨時表數據在TRANACTION結束后消失,即COMMIT/ROLLBACK或結束SESSION都會清除TRANACTION臨時表數據。?

?當會話退出或者用戶提交commit和回滾rollback事務的時候,臨時表的數據自動清空,但是臨時表的結構以及元數據還存儲在用戶的數據字典中。當一個會話結束(用戶正常退出、用戶不正常退出、ORACLE實例崩潰)或者一個事務結束的時候,Oracle對這個會話的表執行 TRUNCATE 語句清空臨時表數據,但不會清空其它會話臨時表中的數據。臨時表可以使用觸發器。

推薦教程:《Oracle視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享