程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫中的臨時表用法

Oracle數據庫中的臨時表用法

編輯:Oracle數據庫基礎

這篇文章主要介紹了Oracle數據庫中的臨時表用法,希望對大家的學習和工作有所幫助。

一:語法

在Oracle中,可以創建以下兩種臨時表:

(1) 會話特有的臨時表

CREATE GLOBAL TEMPORARY ( ) 

ON COMMIT PRESERVE ROWS;

(2) 事務特有的臨時表

CREATE GLOBAL TEMPORARY ( ) 

ON COMMIT DELETE ROWS; 

CREATE GLOBAL TEMPORARY TABLE MyTempTable

所建的臨時表雖然是存在的,但是如果insert 一條記錄然後用別的連接登上去select,記錄是空的。  

--ON COMMIT DELETE ROWS 說明臨時表是事務指定,每次提交後Oracle將截斷表(刪除全部行)

--ON COMMIT PRESERVE ROWS 說明臨時表是會話指定,當中斷會話時Oracle將截斷表。  

二:動態創建

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 過程已成功完成。   

已用
        
        

							
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved