會話級臨時表

蘭在晨發表於2012-08-08
 

建立會話級臨時表

SQL> CREATE GLOBAL TEMPORARY TABLE "HR"."TEMP_TABLE" ( "X" VARCHAR2(10)) ON COMMIT PRESERVE ROWS;

Table created.

 

SQL> insert into temp_table select * from test;

 

5 rows created.

 

SQL> select * from temp_table;

 

X

----------

1

2

3

4

5

SQL> commit;

Commit complete.

 

SQL> select * from temp_table;

 

X

----------

1

2

3

4

5

 

SQL> conn soe/soe;

Connected.

SQL> conn hr/oracle

Connected.

SQL> select * from temp_table;

 

no rows selected

總結:可見會話級級臨時表只在當前會話中有效,當會話結束後表中資料被清空,表結構及後設資料依然存在使用者的資料字典中。

 

SQL> insert into temp_table select * from test;

 

5 rows created.

 

SQL> select * from temp_table;

 

X

----------

1

2

3

4

5

 

SQL> commit

Commit complete.

現在另重新開啟一個session,然後查詢該臨時表。

SQL> select * from temp_table;

 

no rows selected

在新開的會話中重新插入資料:

 

SQL> select * from temp_table;

 

X

----------

6

7

8

9

 

SQL> commit;

 

Commit complete.

現在在原會話中檢視該臨時表

 

SQL> select * from temp_table;

 

X

----------

1

2

3

4

5

依然沒有變化

 

總結:臨時表中 的資料只對當前session有效,每個session 都有自己的臨時資料並且不能訪問其他session 的臨時表中的資料。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26723566/viewspace-740382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章