GPS平台、網站建設、軟件開發、系統運維,找森大網絡科技!
https://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=2071
在oracle的存儲過程中,不能直接使用DDL語句,比如create、alter、drop、truncate等。
那如果我們想在存儲過程中建立一張臨時表就只能使用動態sql語句了:
[sql] view plain copy
- create or replace procedure pro as
- str_sql varchar2(100);
- begin
- -- 創建臨時表
- str_sql := 'create global temporary table temp_table (
- col1 varchar2(10),
- col2 number
- ) on commit preserve rows';
- execute immediate str_sql;
- 10.
- 11. -- 使用臨時表
- 12. str_sql := 'insert into temp_table(col1, col2) values(''a'', 1)';
- 13. execute immediate str_sql;
- 14.
- 15. -- 刪除臨時表
- 16. str_sql := 'drop table temp_table';
- 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
