這篇文章主要介紹了Oracle資料庫中的暫存資料表用法,希望對大家的學習和工作有所協助。
一:文法 Webjx.Com
在Oracle中,可以建立以下兩種暫存資料表:
(1) 會話特有的暫存資料表 Webjx.Com
CREATE GLOBAL TEMPORARY ( )
ON COMMIT PRESERVE ROWS;
(2) 事務特有的暫存資料表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable Webjx.Com
所建的暫存資料表雖然是存在的,但是如果insert 一條記錄然後用別的串連登上去select,記錄是空的。 網頁教學網
--ON COMMIT DELETE ROWS 說明暫存資料表是事務指定,每次提交後ORACLE將截斷表(刪除全部行)
Webjx.Com
--ON COMMIT PRESERVE ROWS 說明暫存資料表是會話指定,當中斷會話時ORACLE將截斷表。
二:動態建立 Webjx.Com
create or replace procedure pro_temp(v_col1 varchar2,v_col2 varchar2) as
v_num number;
begin
select count(*) into v_num from
user_tables where table_name=''T_TEMP'';
--create temporary table
if v_num<1 then
execute immediate ''CREATE GLOBAL TEMPORARY TABLE T_TEMP (
COL1 VARCHAR2(10),
COL2 VARCHAR2(10)
) ON COMMIT delete ROWS'';
end if;
--insert data
execute immediate ''insert into t_temp values
('''''' v_col1 '''''','''''' v_col2 '''''')'';
execute immediate ''select col1 from t_temp'' into v_num;
dbms_output.put_line(v_num);
execute immediate ''delete from t_temp'';
commit;
execute immediate ''drop table t_temp'';
end pro_temp;
測試: 網頁教學網
15:23:54 SQL> set serveroutput on
15:24:01 SQL> exec pro_temp(''11'',''22'');
11
PL/SQL 過程已成功完成。
經過時間: 00: 00: 00.79
15:24:08 SQL> desc t_temp;
ERROR:
ORA-04043: 對象 t_temp 不存在 Webjx.Com
三:特性和效能(與普通表和視圖的比較)
暫存資料表只在當前串連內有效
暫存資料表不建立索引,所以如果資料量比較大或進行多次查詢時,不推薦使用 Webjx.Com
資料處理比較複雜的時候時錶快,反之視圖快點
在僅僅查詢資料的時候建議用遊標: open cursor for ''sql clause'';
Webjx.Com
本文來自:網頁教學網(www.webjx.com)原文連結:http://www.webjx.com/database/oracle/database_oracle_2007_12_22_2384.html