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'。
分享到:
相关推荐
临时表的应用 1)、当某一个SQL语句关联的表...可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中。 2)、程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。
### 数据库临时表详解 #### 一、临时表的概念与作用 在数据库操作过程中,我们经常会遇到需要存储一些中间结果或临时数据的情况。...在实际开发和运维工作中,掌握临时表的使用方法是非常重要的。
- 新创建的会话将使用此临时表空间作为其默认临时表空间。 6. **更改表空间的状态** ```sql ALTER TABLESPACE test READ WRITE; ``` **解释**: - 更改表空间的状态为读写模式。 - 表空间可以处于不同的...
在Oracle数据库中,临时数据的处理是数据库管理的重要组成部分,特别是在执行涉及排序、分组、汇总和索引等复杂操作时。临时数据主要是由这些操作产生的中间结果,例如,当用户对数据进行Order BY排序时,数据库需要...
### 一、Oracle临时表空间简介 Oracle数据库中的临时表空间主要用于存储临时对象,如排序操作、汇总统计、临时表等。这些操作在执行完毕后,数据会自动从临时表空间中清除,不会永久保存。然而,在高并发或大容量...
Oracle数据库在日常运行中可能会遇到各种故障,这些故障可能会影响到数据库的正常运行、性能或安全性。以下是一些常见的Oracle数据库故障及其原因与解决方案: 一、数据库挂起故障 1. ARCHIVE挂起:当归档日志过程...
给定的存储过程“UpdateTempInventoryM”旨在更新一个名为“tmp_inventorym”的临时表,该表汇总了不同业务操作(如收货、发货、借出等)后的库存状态。过程接收五个参数:`DateMMin`、`HasBlin`、`HasQtyin`、`...
本压缩包“ORACLE-select-query.rar”专注于讲解Oracle数据库中的查询技术,特别是多表查询、子查询以及高级子查询。下面将详细探讨这些关键知识点。 首先,基础查询SQL语句是所有数据库操作的基础,它涵盖了SELECT...
在Oracle数据库中,根据不同的权限和需求,可以使用以下几种方法来查询表名: 1. **查询当前用户所拥有的表:** ```sql SELECT table_name, tablespace_name, temporary FROM user_tables; ``` 这条SQL语句...
题目中提到了全局临时表的创建和使用,这是一种在会话期间可见但在会话结束时会被自动删除的特殊类型表。可以通过`ON COMMIT DELETE ROWS`或`ON COMMIT PRESERVE ROWS`选项控制其行为。全局临时表非常适合存储临时...
6.6.4 查询临时表空间中临时文件的信息 6.6.5 查询表空间的空闲空间大小 6.6.6 查询数据段信息 6.7 在OEM中管理表空间 6.7.1 创建(永久)表空间 6.7.2 扩展表空间 6.7.3 修改表空间的空间使用...
在描述中提到的场景中,有几种不同的方法可以实现数据统计,包括通过程序处理、使用临时表和包、标准SQL的UNION以及Oracle特有的分析函数。每种方法都有其优缺点。例如,程序处理方法与数据库无关,但增加了开发工作...
有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。 JARED STILL 从1994年就开始使用...
通过本文档的学习,您应该已经掌握了Oracle SQL中最基本的SELECT语句的使用方法。这些基础知识对于任何希望进一步探索Oracle数据库技术的人来说都是至关重要的。随着经验的积累,您可以逐渐学习更复杂的SQL概念和...
在 SQL Server 中,交叉表(Pivot Table)是一种将一列中的数据转换为多列的方式,从而实现数据的汇总、分析等功能。这种方式非常适合处理需要进行维度变换的数据场景。下面我们将通过一个具体的例子来详细探讨如何...
- **表空间创建**:通过SQL语句或DBCA工具创建不同类型的表空间,如默认表空间、临时表空间等。 - **Oracle中的用户管理**: - **创建用户**:使用CREATE USER语句创建新用户。 - **授权用户**:通过GRANT语句给...