熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫中的臨時表用法

2013-11-13 15:29:34  來源: Oracle 

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

  一語法

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

  () 會話特有的臨時表

  CREATE GLOBAL TEMPORARY ( )

  ON COMMIT PRESERVE ROWS

  () 事務特有的臨時表

  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_col varcharv_col varchar) as v_num number; begin select count(*) into v_num from user_tables where table_name=T_TEMP;   create temporary table if v_num< then execute immediate CREATE GLOBAL TEMPORARY TABLE T_TEMP ( COL VARCHAR() COL VARCHAR() ) ON COMMIT delete ROWS; end if;   insert data execute immediate insert into t_temp values (  v_col    v_col  );   execute immediate select col from t_temp into v_num; dbms_outputput_line(v_num); execute immediate delete from t_temp; commit; execute immediate drop table t_temp; end pro_temp;

  測試

  

  :: SQL> set serveroutput on :: SQL> exec pro_temp();    PL/SQL 過程已成功完成   已用時間: : : :: SQL> desc t_temp; ERROR ORA: 對象 t_temp 不存在

  三特性和性能(與普通表和視圖的比較)

  臨時表只在當前連接內有效

  臨時表不建立索引所以如果數據量比較大或進行多次查詢時不推薦使用

  數據處理比較復雜的時候時表快反之視圖快點

  在僅僅查詢數據的時候建議用游標 open cursor for sql clause


From:http://tw.wingwit.com/Article/program/Oracle/201311/16806.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.