在存儲過程中創建、插入臨時表


GPS平台、網站建設、軟件開發、系統運維,找森大網絡科技!
https://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=2071

 

在oracle存儲過程中創建臨時表

在oracle的存儲過程中,不能直接使用DDL語句,比如create、alter、drop、truncate等。

那如果我們想在存儲過程中建立一張臨時表就只能使用動態sql語句了:

[sql] view plain copy

 

  1. create or replace procedure pro as  
  2.   str_sql varchar2(100);  
  3. begin  
  4.   -- 創建臨時表  
  5.   str_sql := 'create global temporary table temp_table (  
  6.        col1 varchar2(10),  
  7.        col2 number  
  8.     ) on commit preserve rows';  
  9.   execute immediate str_sql;  
  10. 10.   
  11. 11.   -- 使用臨時表  
  12. 12.   str_sql := 'insert into temp_table(col1, col2) values(''a'', 1)';  
  13. 13.   execute immediate str_sql;  
  14. 14.   
  15. 15.   -- 刪除臨時表  
  16. 16.   str_sql := 'drop table temp_table';  
  17. 17.   execute immediate str_sql;  

18. end;  

在oracle中,臨時表分為會話級別(session)和事務級別(transaction)兩種。

會話級的臨時表在整個會話期間都存在,直到會話結束;事務級別的臨時表數據在transaction結束后消失,即commit/rollback或結束會話時,

會清除臨時表數據。

on commit preserve rows -- 會話級別臨時表(退出登錄會結束會話)

on commit delete rows -- 事務級別臨時表(提交或回滾會結束事務)

 

臨時表優缺點:

1. 在僅僅查詢數據時建議使用游標。

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

 

 

GPS平台、網站建設、軟件開發、系統運維,找森大網絡科技!
https://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=2071


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM