1 语法
在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将截断表。
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';
分享到:
相关推荐
SQL Server 中的临时表概念、创建和插入数据等问题 SQL Server 中的临时表概念是指名称以井号 (#) 开头的表,如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表有两种类型:本地临时表和...
MySQL临时表是一种在会话范围内创建的特殊类型的表,它仅对当前会话可见,并在会话结束时自动删除。这种技术在处理复杂查询、中间数据处理或报表生成时非常有用,因为它允许用户将查询结果暂存起来,以便进一步处理...
Oracle 临时表用法 Oracle 临时表是一种特殊的表结构,它可以在数据库中临时存储...但是,使用临时表时需要注意一些问题,例如避免在存储过程中创建临时表,避免在运行时创建临时表,以免导致数据库中的表数量增加。
以下将详细介绍如何在Oracle中创建表空间、临时表空间以及赋予用户对表空间的权限。 首先,我们来了解如何创建一个常规表空间: 1. **创建表空间**: 使用`CREATE TABLESPACE`语句来创建一个新的表空间。例如,...
5. **操作临时表**:一旦临时表创建成功,就可以插入数据、执行查询或进行其他操作。比如,`INSERT INTO temp_table VALUES (value1, value2, ...);` 和 `SELECT * FROM temp_table WHERE condition;` 6. **关闭...
- 如果查询中包含`BLOB`或`TEXT`类型的字段,那么临时表会直接作为磁盘临时表创建,因为`MEMORY`表无法支持这类数据类型。 - 当`ORDER BY`或`DISTINCT`操作涉及超过512字节的列时,也会创建磁盘临时表。 - 在使用...
当我们需要处理一些临时性的数据操作时,可能会涉及到创建临时表。下面我们将详细探讨如何在SpringBoot项目中整合Mybatis,以实现创建临时表的功能。 首先,我们需要在SpringBoot项目中引入Mybatis的相关依赖。在`...
可以为临时表创建索引以提高查询性能,但要注意,这些索引同样会在会话结束时被删除。 8. **清理临时表** 由于临时表在会话结束时自动清理,通常无需显式删除。但在某些情况下,可能需要在会话中途清理临时表,...
1. **创建临时表**:使用`CREATE GLOBAL TEMPORARY TABLE`语句创建临时表。例如: ```sql CREATE GLOBAL TEMPORARY TABLE temp_table ( column1 datatype, column2 datatype, ... ) ON COMMIT DELETE ROWS; `...
本文将详细介绍Oracle临时表的创建方法、使用场景以及优缺点,帮助读者更好地理解和运用这一特性。 #### 二、Oracle临时表概述 Oracle临时表是一种特殊的表,用于存储临时数据,通常用于事务处理或特定会话期间的...
其中,临时表是一个尤为重要的特性,它允许用户在会话期间创建、使用并在会话结束时自动销毁的表,从而提升复杂查询的执行效率。本文将深入探讨MySQL临时表的使用方法、优势以及注意事项。 #### 创建临时表 创建...
查看临时表是否创建,返回0表示未创建,1为创建 select count(*) from pg_class where relname = ‘tmp0’ 或者用下面,下面语句在pg和mysql中都适用 Create Table If Not Exists temp.MyTable( xxx varchar (20...
### Oracle中临时表的创建与使用 #### 一、引言 在Oracle数据库环境中,当处理大规模数据时,经常会遇到性能瓶颈的问题。特别是在那些数据量达到百万级别的大型系统中,如何高效地管理数据成为了关键所在。为了...
网上有人给出了佳的优化思路是: ... with子查询实际上也是用了临时表,Oracle会替你创建一张临时表,因此临时表的开销WITH子查询也会有。只要把AUTOTRACE打开你会看到REDO的开销。 关于临时表的使用至
- **索引和视图**:可以对临时表创建索引并基于临时表创建视图,但这些索引也是临时的,只对当前会话或事务有效。 - **触发器支持**:临时表可以拥有触发器,扩展了功能。 - **导入导出**:可以使用`EXPDP`和`...
- 可以对临时表创建索引并基于临时表建立视图,但这些索引仅对当前会话有效。 - 临时表可以拥有触发器。 - 可以通过`EXP`和`IMP`工具导出临时表的定义,但不能导出数据。 **使用技巧:** - 当多个大表需要关联查询...
解决 Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表...
如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。 Oracle 中的临时表 在 Oracle 中,临时表用来保存事务或会话期间的中间结果。在临时表中保存的数据...
事务型临时表在事务开始时创建,插入的数据只在事务提交或回滚前有效。一旦事务结束,所有记录都会被自动删除。这种类型的临时表主要用于短暂的中间计算或存储,以保持数据库的整洁。 会话型临时表则在会话开始时...
默认情况下,如果没有明确指定,Oracle将创建的临时表视为事务临时表。为清晰起见,建议使用`ON COMMIT DELETE ROWS`关键字来标识事务临时表。 - **数据变化**:在事务临时表中插入的数据仅在当前事务内有效。事务...