oracle中建立臨時表方法

2021-06-26 23:15:32 字數 2023 閱讀 5073

1.首先必須有許可權:

2.建表的語法示例:

-------建立虛擬表

create global temporary table  test (

ssid int,

sname varchar2(20)

) on commit delete rows;

-------插入資料

insert into test values (1,'200');

-------查詢資料

select * from test

-------刪除虛擬表

drop tabel test

用儲存過程建立:

create procduce test

is isql varchar2(200);

dptable varchar2(100):='drop table test';

begin

isql:='create global temporary table  test (sidint,sname varchar2(20)) on commit delete rows;

execute immediate isql; --建立臨時表

insert into test values (1,'abc');

execute immediate dptable; ---刪除臨時表

end;

對於oracle 臨時表在儲存過程中呼叫,我是覺得這視乎沒什麼意義,oracle提供在資料庫裡預定義臨時表,只有在呼叫的時候才會在臨時表空間裡分配空間,也就是說你可以提前在資料庫裡建立臨時表,然後再到儲存過程裡直接呼叫臨時表就行了

oracle的臨時表和sqlserver大不一樣,oracle臨時表中的資料隔離做得挺好,所以你完全可以用固定的臨時表來操作。當然如果你堅持不要固定表,那也可以通過動態sql在過程中建立,但是表名必須不同,否則如果另外的使用者已經建立的話,就會導致建立失敗。

3.在pl/sql中用動態sql進行建立

execute immediate 『create global temporary table '|| tablename||

'(col1 type,.......)'

執行儲存過程的會話(session)結束後,該臨時表將不復存在。

4.create 

global 

temporary 

table 

tablename 

( col1 

varchar2(10), 

col2 

number 

) on 

commit 

preserve(delete) 

rows 

; 這種臨時表不占用表空間,而且不同的session之間互相看不到對方的資料,在會話結束後(或者shutdownimmediate後又重新startup後)表中的資料自動清空,但表不自動刪除,如果選了delete 

rows,則在提交的時候即清空資料,preserve則一直到會話結束,若不指定on commit選項預設為是on commitdelete rows;

刪除臨時表與刪除正常表一樣,drop table cc;

5.不能將本地管理的永久表空間更改為臨時表空間,字典管理的可以。

alter tablespace temptemporary;此時必須是temp這個表空間是字典管理才可以這樣做,否則不可以;

提示錯誤是:ora-03218: 

create/alter 

tablespace 

的無效選項 

6.查詢表空間時,查出來的結果是所有的表空間,包含temp臨時表空間,但資料檔案要分開來查。

select tablespace,status from dba_tablespace; 查詢表空間

select file_name,tablespace,status fromdba_data_files;查詢永久資料檔案;

select file_name,tablespace,status fromdba_temp_files;查詢臨時資料檔案;

oracle中建立臨時表方法

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

Oracle 建立臨時表

oracle 儲存過程中不像sqlserver 中 在儲存過程中用 就可以建立臨時表,用來快取需要處理的資料。oracle主要需要物理建立臨時表結構,用到global temporary table 關鍵字。語法如下 create table create global temporary tabl...

Oracle 建立臨時表

分類 oracle 22 在oracle8i或以上版本中,可以建立以下兩種臨時表 1。會話特有的臨時表 create global temporary on commit preserve rows 2。事務特有的臨時表 create global temporary on commit delet...