Oracle中的临时表用法汇总

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

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的Oracle中的临时表用法汇总教程,一起来看看吧!超容易上手~

【 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 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_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  

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

  PL/SQL 过程已成功完成。  
  已用时间: 00: 00: 00.79

  15:24:08 SQL desc t_temp;

  ERROR:
  ORA-04043: 对象 t_temp 不存在  

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

  3 特性和性能(与普通表和视图的比较)
  临时表只在当前连接内有效
  临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用
  数据处理比较复杂的时候时表快,反之视图快点
  在仅仅查询数据的时候建议用游标: open cursor for 'sql clause';

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

延伸阅读
标签: 电脑入门
Zypper是SUSE Linux下用于管理软件的程序,拥有多种功能,那么Linux下要如何使用Zypper命令来管理软件呢?下面图老师小编就给大家介绍下SUSE Linux使用Zypper命令的方法,感兴趣的朋友可以来了解下。 Zypper是SUSE Linux中用于安装,升级,卸载,管理仓库、进行各种包查询的命令行接口。本篇将会讨论zypper的几个不同命令的例子。 语法:...
今天在我和一家软件公司的开发人员讨论数据库设计调优的时候又讨论到了表变量和临时表的问题,觉得这个问题确实是一个争议比较大的问题。 其实从上次发表了表变量和临时表的一个帖子http://database.ctocio.com.cn/tips/442/8206442.shtml以来,也有些人留言,也有些人发过邮件讨论这个问题。其实表变量和临时表的区别虽然有一些,但...
使用oracle10g的朋友可能会发现以前删除的表在数据库中出现了很多垃圾表,如:BINjR8PK5HhrrgMK8KmgQ9nw==之类的表无法删除无法用delete 删除,一般不影响正常使用,但是有以下情况使我们必须删除它 1,这些表占用空间 2,如果使用Middlegen-Hibernate-r5的朋友会发现一些问题,不你象以前用oracle9时那么顺的生成hibernate配置文件,原因就在这里...
标签: 电脑入门
Linux命令中,chmod命令的用法与chattr命令有些相似,但相对而言chmod命令只是改变文件读写、执行权限,文件权限主要还是通过chattr命令来完成,下面图老师小编就给大家介绍下Linux中chmod命令的用法。 文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限...
这里介绍sql server2005里面的一个使用实例: CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int) INSERT tb SELECT '陕西','西安',3 UNION ALL SELECT '陕西','安康',4 UNION ALL SELECT '陕西','汉中',2 UNION ALL SELECT '广东','广州',5 UNION ALL SELECT '广东','珠海',2 UNION ALL SELECT '广东','东莞',3 UNION ALL ...

经验教程

95

收藏

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