Oracle臨時(shí)表的創(chuàng)建
臨時(shí)表的創(chuàng)建:
創(chuàng)建Oracle 臨時(shí)表,可以有兩種類型的臨時(shí)表:
1、會(huì)話級(jí)的臨時(shí)表
2、事務(wù)級(jí)的臨時(shí)表
1) 會(huì)話級(jí)的臨時(shí)表因?yàn)檫@這個(gè)臨時(shí)表中的數(shù)據(jù)和你的當(dāng)前會(huì)話有關(guān)系,當(dāng)你當(dāng)前SESSION 不退出的情況下,臨時(shí)表中的數(shù)據(jù)就還存在,而當(dāng)你退出當(dāng)前SESSION 的時(shí)候,臨時(shí)表中的數(shù)據(jù)就全部沒有了,當(dāng)然這個(gè)時(shí)候你如果以另外一個(gè)SESSION 登陸的時(shí)候是看不到另外一個(gè)SESSION 中插入到臨時(shí)表中的數(shù)據(jù)的。即兩個(gè)不同的SESSION 所插入的數(shù)據(jù)是互不相干的。當(dāng)某一個(gè)SESSION 退出之后臨時(shí)表中的數(shù)據(jù)就被截?cái)?truncate table ,即數(shù)據(jù)清空)了。會(huì)話級(jí)的臨時(shí)表創(chuàng)建方法:
Create Global Temporary Table Table_Name
(Col1 Type1,Col2 Type2...) On Commit Preserve Rows ;
舉例:
create global temporary table Student
(Stu_id Number(5),
Class_id Number(5),
Stu_Name Varchar2(8),
Stu_Memo varchar2(200)) on Commit Preserve Rows ;
2) 事務(wù)級(jí)臨時(shí)表是指該臨時(shí)表與事務(wù)相關(guān),當(dāng)進(jìn)行事務(wù)提交或者事務(wù)回滾的時(shí)候,臨時(shí)表中的數(shù)據(jù)將自行被截?cái)?,其他的?nèi)容和會(huì)話級(jí)的臨時(shí)表的一致(包括退出SESSION 的時(shí)候,事務(wù)級(jí)的臨時(shí)表也會(huì)被自動(dòng)截?cái)?。事務(wù)級(jí)臨時(shí)表的創(chuàng)建方法:
Create Global Temporary Table Table_Name
(Col1 Type1,Col2 Type2...) On Commit Delete Rows ;
舉例:
create global temporary table Classes
(Class_id Number(5),
Class_Name Varchar2(8),
Class_Memo varchar2(200)) on Commit delete Rows ;
3) 兩中類型臨時(shí)表的區(qū)別
會(huì)話級(jí)臨時(shí)表采用 on commit preserve rows ;而事務(wù)級(jí)則采用 on commit delete rows ;用法上,會(huì)話級(jí)別只有當(dāng)會(huì)話結(jié)束臨時(shí)表中的數(shù)據(jù)才會(huì)被截?cái)啵沂聞?wù)級(jí)臨時(shí)表則不管是 commit 、 rollback 或者是會(huì)話結(jié)束,臨時(shí)表中的數(shù)據(jù)都將被截?cái)?/p>
4 )什么時(shí)候使用臨時(shí)表
1 )、當(dāng)某一個(gè) SQL 語句關(guān)聯(lián)的表在 2 張及以上,并且和一些小表關(guān)聯(lián)??梢圆捎脤⒋蟊磉M(jìn)行分拆并且得到比較小的結(jié)果集合存放在臨時(shí)表中
2 )、程序執(zhí)行過程中可能需要存放一些臨時(shí)的數(shù)據(jù),這些數(shù)據(jù)在整個(gè)程序的會(huì)話過程中都需要用的等等。
通過上文中的介紹相信現(xiàn)在大家對(duì)Oracle臨時(shí)表的創(chuàng)建已經(jīng)不陌生,只要大家經(jīng)常練習(xí),就一定能夠很熟練的掌握Oracle臨時(shí)表的創(chuàng)建方法。
【編輯推薦】















 
 
 
 
 
 
 