`
ioio
  • 浏览: 140901 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

临时表的创建

    博客分类:
  • db
阅读更多

 

 

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 中的临时表概念是指名称以井号 (#) 开头的表,如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表有两种类型:本地临时表和...

    mysql临时表用法分析【查询结果可存在临时表中】

    MySQL临时表是一种在会话范围内创建的特殊类型的表,它仅对当前会话可见,并在会话结束时自动删除。这种技术在处理复杂查询、中间数据处理或报表生成时非常有用,因为它允许用户将查询结果暂存起来,以便进一步处理...

    oracle临时表用法

    Oracle 临时表用法 Oracle 临时表是一种特殊的表结构,它可以在数据库中临时存储...但是,使用临时表时需要注意一些问题,例如避免在存储过程中创建临时表,避免在运行时创建临时表,以免导致数据库中的表数量增加。

    学习oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    以下将详细介绍如何在Oracle中创建表空间、临时表空间以及赋予用户对表空间的权限。 首先,我们来了解如何创建一个常规表空间: 1. **创建表空间**: 使用`CREATE TABLESPACE`语句来创建一个新的表空间。例如,...

    MysqlODBC临时表.rar

    5. **操作临时表**:一旦临时表创建成功,就可以插入数据、执行查询或进行其他操作。比如,`INSERT INTO temp_table VALUES (value1, value2, ...);` 和 `SELECT * FROM temp_table WHERE condition;` 6. **关闭...

    MySQL性能分析之临时表

    - 如果查询中包含`BLOB`或`TEXT`类型的字段,那么临时表会直接作为磁盘临时表创建,因为`MEMORY`表无法支持这类数据类型。 - 当`ORDER BY`或`DISTINCT`操作涉及超过512字节的列时,也会创建磁盘临时表。 - 在使用...

    SpringBoot 整合Mybatis 创建临时表

    当我们需要处理一些临时性的数据操作时,可能会涉及到创建临时表。下面我们将详细探讨如何在SpringBoot项目中整合Mybatis,以实现创建临时表的功能。 首先,我们需要在SpringBoot项目中引入Mybatis的相关依赖。在`...

    oracle临时表

    可以为临时表创建索引以提高查询性能,但要注意,这些索引同样会在会话结束时被删除。 8. **清理临时表** 由于临时表在会话结束时自动清理,通常无需显式删除。但在某些情况下,可能需要在会话中途清理临时表,...

    Oracle 临时表用法

    本文将详细介绍Oracle临时表的创建方法、使用场景以及优缺点,帮助读者更好地理解和运用这一特性。 #### 二、Oracle临时表概述 Oracle临时表是一种特殊的表,用于存储临时数据,通常用于事务处理或特定会话期间的...

    Mysql临时表使用说明

    其中,临时表是一个尤为重要的特性,它允许用户在会话期间创建、使用并在会话结束时自动销毁的表,从而提升复杂查询的执行效率。本文将深入探讨MySQL临时表的使用方法、优势以及注意事项。 #### 创建临时表 创建...

    PgSQl临时表创建及应用实例解析

    查看临时表是否创建,返回0表示未创建,1为创建 select count(*) from pg_class where relname = ‘tmp0’  或者用下面,下面语句在pg和mysql中都适用 Create Table If Not Exists temp.MyTable( xxx varchar (20...

    Oracle中临时表的创建

    ### Oracle中临时表的创建与使用 #### 一、引言 在Oracle数据库环境中,当处理大规模数据时,经常会遇到性能瓶颈的问题。特别是在那些数据量达到百万级别的大型系统中,如何高效地管理数据成为了关键所在。为了...

    Oracle存储过程中使用临时表

    1. **创建临时表**:使用`CREATE GLOBAL TEMPORARY TABLE`语句创建临时表。例如: ```sql CREATE GLOBAL TEMPORARY TABLE temp_table ( column1 datatype, column2 datatype, ... ) ON COMMIT DELETE ROWS; `...

    Oracle 临时表之临时表的应用问题

    网上有人给出了佳的优化思路是: ...  with子查询实际上也是用了临时表,Oracle会替你创建一张临时表,因此临时表的开销WITH子查询也会有。只要把AUTOTRACE打开你会看到REDO的开销。  关于临时表的使用至

    OracleTemporaryTables(Oracle临时表).pdf

    - **索引和视图**:可以对临时表创建索引并基于临时表创建视图,但这些索引也是临时的,只对当前会话或事务有效。 - **触发器支持**:临时表可以拥有触发器,扩展了功能。 - **导入导出**:可以使用`EXPDP`和`...

    OracleTemporaryTables(Oracle临时表).docx

    - 可以对临时表创建索引并基于临时表建立视图,但这些索引仅对当前会话有效。 - 临时表可以拥有触发器。 - 可以通过`EXP`和`IMP`工具导出临时表的定义,但不能导出数据。 **使用技巧:** - 当多个大表需要关联查询...

    Oracle临时表空间满的解决步骤

    解决 Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表...

    主流数据库中临时表的使用

    如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。 Oracle 中的临时表 在 Oracle 中,临时表用来保存事务或会话期间的中间结果。在临时表中保存的数据...

    ORACLE中临时表

    事务型临时表在事务开始时创建,插入的数据只在事务提交或回滚前有效。一旦事务结束,所有记录都会被自动删除。这种类型的临时表主要用于短暂的中间计算或存储,以保持数据库的整洁。 会话型临时表则在会话开始时...

    oracle临时表操作学习资料

    默认情况下,如果没有明确指定,Oracle将创建的临时表视为事务临时表。为清晰起见,建议使用`ON COMMIT DELETE ROWS`关键字来标识事务临时表。 - **数据变化**:在事务临时表中插入的数据仅在当前事务内有效。事务...

Global site tag (gtag.js) - Google Analytics