Oracle中的临时表用法汇总

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

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

【 tulaoshi.com - 编程语言 】

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

  1 语法

  在Oracle中,可以创建以下两种临时表:

  1) 会话特有的临时表

  CREATE GLOBAL TEMPORARY ( )

  ON COMMIT PRESERVE ROWS;

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

  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  

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

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

  15:24:08 SQL desc t_temp;

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

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

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

延伸阅读
标签: Web开发
如需转载,请注明出处! 用过ORACLE的人都知道,要想在ORACLE中更改表的列名和顺序可是一件很烦琐的事,下面给大家提供一种简单的方法。 SQL select object_id from all_objects where owner='SCOTT' and object_name='T1'; OBJECT_ID ---------- 6067 SQL select obj#,col#,name from sys.col$ where obj#=6067; OBJ# COL# ---------- --...
今天在我和一家软件公司的开发人员讨论数据库设计调优的时候又讨论到了表变量和临时表的问题,觉得这个问题确实是一个争议比较大的问题。 其实从上次发表了表变量和临时表的一个帖子http://database.ctocio.com.cn/tips/442/8206442.shtml以来,也有些人留言,也有些人发过邮件讨论这个问题。其实表变量和临时表的区别虽然有一些,但...
使用oracle10g的朋友可能会发现以前删除的表在数据库中出现了很多垃圾表,如:BINjR8PK5HhrrgMK8KmgQ9nw==之类的表无法删除无法用delete 删除,一般不影响正常使用,但是有以下情况使我们必须删除它 1,这些表占用空间 2,如果使用Middlegen-Hibernate-r5的朋友会发现一些问题,不你象以前用oracle9时那么顺的生成hibernate配置文件,原因就在这里...
如果视图定义包括条件(譬如 WHERE 子句)并且其意图是确保任何引用该视图的 INSERT 或 UPDATE 语句都应用 WHERE 子句,则必须使用 WITH CHECK OPTION 定义该视图。这个选项可以确保数据库中正在修改的数据的完整性。如果在 INSERT 或 UPDATE 操作期间违反了...
标签: 电脑入门
Linux命令中,chmod命令的用法与chattr命令有些相似,但相对而言chmod命令只是改变文件读写、执行权限,文件权限主要还是通过chattr命令来完成,下面图老师小编就给大家介绍下Linux中chmod命令的用法。 文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限...

经验教程

585

收藏

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