oracle 建立暫存資料表,oracle建立
提交事務後會自動清空,不同的事務之間資料隔離create global temporary table GLS_REPORT_EXPR( EXPRNO VARCHAR2(30) not null, EXPR VARCHAR2(1024))on commit delete rows
oracle中建立暫存資料表與建立普通表的不同
對全域暫存資料表的總結
在暫存資料表上的操作比在一般的表上的操作要快。因為:
1建立暫存資料表不需要往編目表中插入條目,暫存資料表的使用也不需要訪問編目表,因此也沒有對編目表的爭用。
2僅有建立暫存資料表的app才可存取暫存資料表,所以在處理暫存資料表時沒有鎖。
3如果指定NOT LOGGED選項,在處理暫存資料表時不記日誌。所以如果有僅在資料庫的一個會話中使用的大量臨時資料,把這些資料存入暫存資料表能大大提高效能。
DECLARE GLOBAL TEMPORARY TABLE TT(C1 INT, C2 CHAR(20));
在CONNECT RESET命令後,暫存資料表不再存在。
建暫存資料表是動態編譯的,所以對暫存資料表的使用也必須放在DECLARE CURSER 後面
CREATE PROCEDURE INSTT2(P1 INT, P2 CHAR(20))
BEGIN
DECLARE GLOBAL TEMPORARY TABLE TT(C1 INT, C2 CHAR(20)) %
INSERT INTO SESSION.TT VALUES(P1, P2);
BEGIN
DECLARE C1 CURSOR WITH RETURN FOR SELECT * FROM SESSION.TT;
END;
END %
2。事務特有的暫存資料表
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
ON COMMIT DELETE ROWS;
在Oracle中,全域暫存資料表並不會刪除,實際上你只需要建立一次,以後直接應用就行了,這與MS和Sybase不一樣。實際上在斷開資料庫連接時,暫存資料表中資料自動清空,不同的Session之間是隔離的,不許要當心相互影響,不過如果起用了串連共用的話,你要用On Commit delete rows使資料僅在事物內部有效。
oracle怎建立一個暫存資料表
你這個#AA是暫存資料表的表名吧,起表名不能用#這樣的符號吧!
alter GLOBAL TEMPORARY TABLE AAA
ON COMMIT DELETE ROWS
AS
SELECT * FROM AA;