当前位置: 首页 > 图文教程 > 数据库 > Oracle > Oracle数据库中的临时表用法

Oracle
常见的一些Oracle初学者的问题
ORACLE认证系统概述
数据库考试简介:Oracle认证
Oracle认证基础知识介绍
ADO连接Oracle Access示例及记录集处理源码
SQL Server和MySQL的安全性分析
用Oracle和SQL Server数据库组合利弊分析
Oracle 11g分区功能新革命
Flashback Query 恢复误删除的数据
基于Oracle高性能动态SQL程序开发
怎样在Oracle 9i中正确的转换时区
Oracle 10g导出的数据库能否导入Oracle 9i?
增加Distinct后查询效率反而提高
Oracle限制返回结果集的大小
Java语言数据库操作的基本流程
美国甲骨文(ORACLE)公司入驻渝中区大都会商厦
RHEL AS4上安装oracle 10R2 的方法
DB中如何查询Table占用空间的大小
编写高质量高性能的MySQL语法
Oracle数据库自动备份的具体实现步骤

Oracle数据库中的临时表用法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 43 ::
收藏到网摘: n/a

这篇文章主要介绍了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 过程已成功完成。  
已用时间: 00: 00: 00.79
15:24:08 SQL> desc t_temp;
ERROR:
ORA-04043: 对象 t_temp 不存在 

三:特性和性能(与普通表和视图的比较)

临时表只在当前连接内有效

临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用

数据处理比较复杂的时候时表快,反之视图快点

在仅仅查询数据的时候建议用游标: open cursor for ''sql clause'';