在Oracle数据库中的临时表的用法汇总

2016-02-19 20:20 4 1 收藏

下面这个在Oracle数据库中的临时表的用法汇总教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - 编程语言 】

说明:下文中的一些说明和示例代码摘自CSDN,恕不一一指明出处,在此一并对相关作者表示感谢!

  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 RO 
WS 说明临时表是事务指定,每次提交后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';  

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  --create temporary table

  if v_num1 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 特性和性能(与普通表和视图的比较)

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

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

来源:http://www.tulaoshi.com/n/20160219/1623406.html

延伸阅读
/* * 创建日期 2005-9-27 * * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql.*; /** * A JDBC test application for Oracle * @author Fane * @version 1.0.0 * @since JDK1.4 */ ...
把表达式True=False放到表的ValidationRule属性就能锁上。HardLockTable?实现了该功能。 声明 PublicMyDBAsDatabase DimDummyAsInteger 函数 FunctionHardLockTable(ByValwhichActionAsString,?ByValaTableAsString)AsInteger OnErrorGoToHardLockTableError HardLockTable=True SelectCasewhichAction C...
本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。 一般来说...
    1.首先查看表空间的名字和所属文件 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;      2.增加数据文件 alter tablespace users add datafile '/u01/Oracle/oradata/umail/users02.dbf' size 4000M a...
完整性约束 完整性约束用于增强数据的完整性,Oracle提供了5种完整性约束: Check NOT NULL Unique Primary Foreign key 完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了...

经验教程

249

收藏

51
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部