国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle中的臨時表用法匯總

2024-08-29 13:47:52
字體:
來源:轉載
供稿:網友

  
說明:下文中的一些說明和示例代碼摘自CSDN,恕不一一指明出處,在此一并對相關作者表示感謝! 假如作者有異議,請來信說明

 
1 語法 在Oracle中,可以創建以下兩種臨時表:
1) 會話特有的臨時表
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> )
ON COMMIT PRESERVE ROWS;
2) 事務特有的臨時表
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的臨時表雖然是存在的,但是假如insert 一條記錄然后用別的連接登上去select,記錄是空的。


--ON COMMIT DELETE ROWS 說明臨時表是事務指定,每次提交后ORACLE將截斷表(刪除全部行)
--ON COMMIT PRESERVE ROWS 說明臨時表是會話指定,當中斷會話時ORACLE將截斷表。

2 動態創建 
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 不存在

 
3 特性和性能(與普通表和視圖的比較) 臨時表只在當前連接內有效臨時表不建立索引,所以假如數據量比較大或進行多次查詢時,不推薦使用數據處理比較復雜的時候時表快,反之視圖快點在僅僅查詢數據的時候建議用游標: open cursor for 'sql clause';

歡迎補充!

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 醴陵市| 宁津县| 微博| 丰城市| 延庆县| 临沧市| 庆云县| 宜阳县| 阿拉善盟| 临洮县| 海淀区| 顺平县| 铁岭市| 赣州市| 天台县| 张家口市| 老河口市| 遂平县| 木兰县| 孟村| 云阳县| 承德县| 简阳市| 东乌珠穆沁旗| 高密市| 中卫市| 睢宁县| 十堰市| 都昌县| 上蔡县| 新津县| 潢川县| 上杭县| 凤阳县| 黄山市| 金沙县| 平潭县| 句容市| 贵州省| 乐山市| 德令哈市|