Oracle中臨時表

2021-04-12 14:37:56 字數 1364 閱讀 7875

最近考慮到我們的資料庫端寫儲存過程關於臨時表使用的情況,由於我們  

現在還不清楚資料庫端到底是怎麼處理的,是否和sql server的處理方式相

同,是否會存在隱患等等一些問題,為了避免將來不必要的麻煩我做了深  

入的研究和檢視了一些權威的資料,現在和大家共享,希望大家在處理  

oracle臨時表是注意一下:

首先是建立臨時表的語法:

create global temporary table table

"(" column datatype [default expr]

[, column datatype [default expr] [ ]... ")"

on commit rows ;  

oracle中的臨時表有兩種一種是事務級別的臨時表它在事務結束的時候自

動清空記錄,另一種是會話級的它在我們訪問資料庫是的乙個會話結束後  

自動的清空。關於臨時表多使用者並行不是問題,乙個會話從來不會阻止另  

乙個會話使用臨時表。即使「鎖定」臨時表,乙個會話也不會阻止其他會  

話使用它們的臨時表。  

如果有在sql server 和/或sybase中使用臨時表的經驗,需要主要考

慮的不是執行select x,y ,z into #temp from some_table 來建立和裝載臨時

表,而是:  

1.            對於每乙個資料庫,建立所有的temp表作為全域性臨時表。這將作

為應用程式安裝的一部分完成,就像建立永久表一樣。  

2.            只要在過程中簡單的insert into temp(x,y,z) selelct x,y,z from some_table。

只是理解這點,這裡的目的不是執行儲存過程建立表。在oracle中這樣做

不是正確的方法。ddl是一種消耗資源非常大的操作,在執行時盡量不要

使用,應用程式需要的臨時表應在應用程式安裝時建立,而不是在執行時  

建立。oracle中的臨時表和其他資料庫的臨時表是相似的,在每個資料庫

中建立臨時表一次,不必在資料庫中的每個儲存過程中建立一次。臨時表  

總是存在的,他們作為物件存在於資料字典中,並且總是保持為空,直到  

有會話在其中放入資料。

所有我在這裡說明如果我們在儲存過程中建臨時表,每次都建立乙個那麼  

我的系統隨著使用者的操作呼叫此儲存過程,每次多乙個這樣的表,我們在  

不知不覺中資料庫中的表的數量會越來越多,而我們還不知道會存在很大  

的隱患的所有說這點不可小視,為了我們的系統能在客戶那裡平穩、安全  

的執行我們一定要注意這樣的問題。如果不手動drop 表,臨時表還是在資料字典中存在的。

Oracle中臨時表

最近考慮到我們的資料庫端寫儲存過程關於臨時表使用的情況,由於我們 現在還不清楚資料庫端到底是怎麼處理的,是否和 sql server 的處理方式相 同,是否會存在隱患等等一些問題,為了避免將來不必要的麻煩我做了深 入的研究和檢視了一些權威的資料,現在和大家共享,希望大家在處理 oracle 臨時表是...

oracle中建立臨時表方法

1.首先必須有許可權 2.建表的語法示例 建立虛擬表 create global temporary table test ssid int,sname varchar2 20 on commit delete rows 插入資料 insert into test values 1,200 查詢資料...

oracle中建立臨時表方法

1.首先必須有許可權 按照上面兩位說得一定可以。2.建表的語法示例 建立虛擬表 create global temporary table test ssid int,sname varchar2 20 on commit delete rows 插入資料 insert into test valu...