`
wangchangtao
  • 浏览: 18588 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

创建临时表样例

阅读更多
Oracle8i及以上版本中可以创建两种临时表:
1.会话临时表
  CREATE GLOBAL TEMPORARY TABLE_NAME (column specification)
    ON COMMIT PRESERVE ROWS;

2.事务临时表
    CREATE GLOBAL TEMPORARY TABLE_NAME (column specification)
    ON COMMIT DELETE ROWS;
--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
冲突的问题更本不用考虑.

  通过CREATE GLOBAL TEMPORARY TABLE命令创建一个临时表,对于事务类型的临时表,
数据只是在事务期间存在,对于会话类型的临时表,数据在会话期间存在。

  会话的数据对于当前会话私有。每个会话只能看到并修改自己的数据。DML锁不会加到
临时表的数据上。下面的语句控制行的存在性。
 
● ON COMMIT DELETE ROWS 表明行只是在事务期间可见
● ON COMMIT PRESERVE ROWS 表明行在整个会话期间可见

  可以对临时表创建索引,视图,出发器,可以用export和import工具导入导出表的
定义,但是不能导出数据。表的定义对所有的会话可见。
Temporary Tables临时表
1.简介
   ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字典中。
2.详细介绍
Oracle临时表分为 会话级临时表 和事务级临时表。
会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。
事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollback),Oracle自动清除临时表中数据。
临时表中的数据只对当前Session有效,每个Session都有自己的临时数据,并且不能访问其它Session的临时表中的数据。因此,临时表不需要DML锁.当一个会话结束(用户正常退出 用户不正常退出 ORACLE实例崩溃)或者一个事务结束的时候,Oracle对这个会话的
表执行 TRUNCATE 语句清空临时表数据.但不会清空其它会话临时表中的数据.
你可以索引临时表和在临时表基础上建立视图.同样,建立在临时表上的索引也是临时的,也是只对当前会话或者事务有效.
临时表可以拥有触发器.
3.样例
create or replace procedure tmp_table_procedure
AS
i_count integer;
begin
    select count(*) into i_count from user_objects t where t.OBJECT_TYPE ='TABLE' and t.OBJECT_NAME = upper('T_tran_TEMP');
    if i_count>0 then
        EXECUTE IMMEDIATE 'drop table T_tran_TEMP purge';
    end if;

    select count(*) into i_count from user_objects t where t.OBJECT_TYPE ='TABLE' and t.OBJECT_NAME = upper('T_session_TEMP');
    if i_count>0 then
        EXECUTE IMMEDIATE 'drop table T_session_TEMP
purge';
    end if;
end tmp_table_procedure;
/
call tmp_table_procedure();
drop procedure tmp_table_procedure;
  create global temporary table T_tran_TEMP
(
  NODENAME VARCHAR2(512),
  PATH     VARCHAR2(1024),
  QUALITY  NUMBER
)
on commit preserve ROWS;


create global temporary table T_session_TEMP
(
  NODENAME VARCHAR2(512),
  QUALITY  NUMBER,
  NUM      NUMBER
)
on commit delete rows;
分享到:
评论

相关推荐

    mysql复杂存储过程实例(游标、临时表、循环、递归)

    本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。

    SQL插入表样例,数值自己可以替换

    ### SQL插入表样例,数值自己可以替换 #### 资源名称:SQL插入表资源 #### 资源描述: 本资源旨在为数据库管理员、开发者以及学习者提供一系列关于如何在关系型数据库中使用SQL(Structured Query Language)进行...

    OCI_LOB样例程序

    `OCI_LOB`样例程序是针对LOB数据类型在OCI中的操作提供的一系列示例代码,旨在帮助开发者理解如何在Oracle数据库中创建、读取、更新和删除LOB对象。下面将详细介绍这些知识点。 1. OCI LOB基础概念: - BLOB:二...

    oracle_10g_创建数据库和表用户名和密码

    - **SYSAUX表空间**是10g新引入的,用于存储系统内部常用样例用户的对象。 - **UNDO表空间**存储撤销信息。 - **USERS表空间**推荐给普通用户使用。 - **TEMPORARY表空间**用于临时数据。 用户可以创建自定义表...

    oracle 数据库创建ppt

    - **TEMPORARY表空间**:临时使用,供用户临时存储数据。 3. **基本概念**: - **表**:数据库中的数据对象,由列组成,每个列有名字和属性,用于存储用户数据。 - **约束条件**: - **主键**:确保表中唯一...

    期刊论文样例数据结合chatglm搭建个人知识库

    这通常涉及使用Python的`pymysql`或`mysql-connector-python`库连接到数据库,执行SQL脚本`yxdoi.sql`创建表结构,再将`getdata.py`处理后的数据插入到相应表中。 为了更好地利用这些资源,可以考虑以下步骤: 1. ...

    毕业设计MATLAB_基于Java的数据表.zip

    5. **table.png**:这可能是一个显示数据表样例的图片,用于直观地展示程序的输出结果,帮助理解数据表的结构和内容。 6. **license.txt**:通常包含项目的许可协议信息,规定了他人如何使用、分发和修改这个项目。...

    foodmart数据库实例_3)使用foodmart数据集的销售样例进行商品关联规则分析(需要写清楚数据清理过程)。,food mart数据集

    在T-SQL中,可以使用临时表和递归查询来实现这些计算。 6. 结果可视化: 分析结果通常以表格形式返回,包括项集、支持度和置信度等信息。为了更好地理解和解释这些规则,可以使用SQL Server Reporting Services ...

    精通Oracle核心技术和项目实战之表空间管理.pptx

    例如,通过合理规划用户表空间、索引表空间和临时表空间,可以提高查询速度,降低I/O冲突,确保数据库的高效运行。 总之,Oracle 11g的表空间管理是数据库管理的重要组成部分,涉及模式、存储结构、段、区间、块等...

    Access+2000中文版高级编程

    11.4 用动态列创建交叉表查询的报表 320 11.4.1 报表使用的按窗体查询 321 11.4.2 报表使用的交叉表查询 323 11.4.3 DynamicColumnsExample报表 325 11.5 使用多项选择列表框选择多项打印主题 329 11.5.1 ...

    Access 2000中文版高级编程(part1)

    11.4 用动态列创建交叉表查询的报表 320 11.4.1 报表使用的按窗体查询 321 11.4.2 报表使用的交叉表查询 323 11.4.3 DynamicColumnsExample报表 325 11.5 使用多项选择列表框选择多项打印主题 329 11.5.1 ...

    PCD database

    这个数据库样例可能是为了教学或学习数据库设计而创建的,因此它不适用于一般用途,而是用于理解和实践数据库原理。 描述中提到的“數據庫樣例”是指提供了一个实际的数据库实例,用户可以通过它来学习如何设计和...

    minFat.rar_fat_fat12_fat文件系统_minfat_ramdisk

    再者,RAMDISK是一种虚拟存储技术,它将一部分内存模拟为硬盘驱动器,从而创建一个快速的临时存储空间。在Microsoft Visual C++环境下,利用RAMDISK,minFat可以在内存中模拟出一个磁盘环境,无需物理存储介质,便于...

    浅谈SQL Server 2000教学中的体会.pdf

    在教学中,通过将创建触发器的语法分解为“子句”,并引入特殊的临时表inserted和deleted来帮助学生理解触发器的工作原理。通过实例演示触发器的作用,有助于学生更好地理解和应用触发器来解决数据同步的问题。 三...

    MySql更新优化策略

    6. **临时表与子查询**:在某些情况下,使用子查询或临时表可以优化更新过程。例如,先将要更新的数据暂存到临时表,然后一次性更新主表。但这需要权衡内存使用和额外的存储操作。 7. **优化数据类型和字段长度**:...

    oracle数据库dba管理手册

    12.1.7 创建和管理索引组织表 348 12.1.8 创建和管理位映射索引 349 12.2 事务管理 350 12.2.1 配置批事务环境 350 12.2.2 装载数据 352 12.2.3 插入数据 352 12.2.4 删除数据 353 12.3 备份 355 12.3.1 备份需求及...

    sql server 2005 填空题

    master数据库存储关于整个SQL Server实例的信息,model用于创建新数据库的模板,msdb用于调度作业和维护任务,tempdb则用于存储临时对象。 3. 两个样例数据库是Pubs和Northwind,它们通常用于学习和演示SQL Server...

Global site tag (gtag.js) - Google Analytics