Oracle存儲過程中臨時表的使用技巧
一、Oracle臨時表知識
在Oracle中,臨時表分為SESSION(會話級)、TRANSACTION(事務級)兩種,SESSION級的臨時表數據在整個SESSION都存在,直到結束此次SESSION;而 TRANSACTION級的臨時表數據在TRANACTION結束后消失,即COMMIT/ROLLBACK或結束SESSION都會清除 TRANACTION臨時表數據。
-
會話級臨時表 示例
1創建
create global temporary table temp_tbl(col_a varchar2(30))
on commit preserve rows
2插入數據
insert into temp_tbl values('test session table')
3提交
commit;
4查詢
select *from temp_tbl
可以看到數據'test session table'記錄還在。
結束SESSION,重新登錄,再查詢數據select *from temp_tbl,這時候記錄已不存在,因為系統在結束SESSION時自動清除記錄 。
-
事務級臨時表 示例
1創建
create global temporary table temp_tbl(col_a varchar2(30))
on commit delete rows
2插入數據
insert into temp_tbl values('test transaction table')
3提交
commit ;
4查詢
select *from temp_tbl
這時候可以看到剛才插入的記錄'test transaction table'已不存在了,因為提交時已經晴空了數據庫;同樣,如果不提交而直接結束SESSION,重新登錄記錄也不存在 。