谈谈oracle中的临时表

--------------------创建临时表 临时保存从xml字符串解析来的数据---------------------------

会话级别临时表
SQL> create global temporary table temp_order01 (orderid number,ordernumber number,orderdate date) on commit delete rows;

Table created.

事务级别临时表
SQL> create global temporary table temp_order02 (orderid number,ordernumber number,orderdate date) on commit preserve rows;

Table created.

SQL> INSERT INTO TEMP_ORDER SELECT * FROM XMLTABLE(‘$B/orderlist/order‘ PASSING
XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&V_XML‘) AS B
COLUMNS orderid number PATH ‘/order/orderid‘,
ordernumber number PATH ‘/order/ordernumber‘,
orderdate date PATH ‘/order/orderprice‘);
Enter value for v_xml: <orderlist><order><orderid>1</orderid><ordernumber>01</ordernumber><orderdate>sysdate</orderdate></order></orderlist>
old 2: XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&V_XML‘) AS B
new 2: XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?><orderlist><order><orderid>1</orderid><ordernumber>01</ordernumber><orderdate>sysdate</orderdate></order></orderlist> ‘) AS B

1 row created.

SQL> select * from temp_order;

ORDERID ORDERNUMBER ORDERDATE
---------- ----------- ---------
1 1

SQL> commit;

Commit complete.

SQL> select * from temp_order;

no rows selected

<orderlist><order><orderid>1</orderid><ordernumber>01</ordernumber><orderdate>sysdate</orderdate></order></orderlist>

时间: 2024-10-28 21:42:23

谈谈oracle中的临时表的相关文章

Oracle中的临时表

Oracle中的临时表 在Oracle中,临时表是"静态"的,它与普通的数据表一样只需要一次创建,其结构从创建到删除的整个期间都是有效的.相对于其他类型的表,临时表只有在用户实际向表中添加数据时,才会为其分配空间,并且分配的空间来自临时表空间.这就避免了与永久对象的数据争用存储空间. 创建临时表的语法如下: CREATE GLOBAL TEMPORARY TABLE table_name( column_name data_type,[column_name data_type,...

oracle 中的临时表

临时表: 除了永久表,oracle还可以建立临时表来保存 session私有的data,这些data只存在于一个事务或者session的持续存在的期间内. CREATE GLOBAL TEMPORARY TABLE  语句建立了一个临时表,该临时表可以是事务级别,也可以是session级别. 对于事务级别的临时表,data存在于事务的持续期间.对于session级别的临时,data存在于session的持续期间.临时表中的data 对各自的session的是私有的.每个session 只能看到并

如何在oracle中缩小临时表空间?ORA-01652无法在表空间中扩展temp

查询临时表空间有多大: SQL> SELECT tablespace_name, file_name, bytes FROM dba_temp_files WHERE tablespace_name like 'TEMP%'; TABLESPACE_NAME FILE_NAME BYTES ----------------- -------------------------------- -------------- TEMP /the/full/path/to/temp01.dbf 13,9

在oracle存储过程中创建临时表

在oracle的存储过程中,不能直接使用DDL语句,比如create.alter.drop.truncate等. 那如果我们想在存储过程中建立一张临时表就只能使用动态sql语句了: create or replace procedure pro as str_sql varchar2(100); begin -- 创建临时表 str_sql := 'create global temporary table temp_table ( col1 varchar2(10), col2 number

浅谈oracle中rowid和rownum

[ 概要 ] 刚刚接触oracle的同学可能常常会被rowid和rownum这两个词弄混, 弄清楚这两个家伙对于我们写sql会有很大的帮助, 下面偶就抛砖引玉, 简单地谈谈他们之间的区别吧. [ 比较 ] rowid和rownum都是oracle中的伪列, 但他们还是存在本质区别: rowid: 是物理地址, 用于定位数据表中数据的位置, 它是唯一的且不会改变. rownum: 是根据查询的结果集给每行分配的一个逻辑编号, 查询结果不同, rownum自然不同. 对于同一条记录, 查询条件不同,

oracle中的exists 和not exists 用法详解

oracle中的exists 和not exists 用法详解 有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>

谈谈Oracle基本操作(上)

当前我们市面上流行的数据库有sybase,Oracle,DB2,Mysql,sqlSever,MSQL, MariaDB 今天我们主要谈谈Oracle数据库 一:Oracle原理 1:什么是数据库:数据库管理的是硬盘中的数据,把数据打包,方便管理,数据增删改查,它的保存数据的是数据库文件;数据库一切都是表:用数据表来保存数据; 2:分类: (1)结构化数据库:保存在硬盘当中,SQL语句查询;以SQL语句模型为基础的数据库 (2)非结构化数据库:mongoDB,Redis,memecache;把数

ORACLE 中 SQL语句优化

(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):  ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.    (2) WHERE子句中的连接顺序.:  ORACLE采用自下而上的顺序解

Oracle中DBMS_LOB包使用小结

本文主要介绍oracle数据库中dbms_lob包的使用以及使用dbms_lob包来维护lob数据库类型的基本方法.随着社会的发展,在现代信息系统的开发中,需要存储的已不仅仅是简单的文字信息,同时还包括一些图片和音像资料或者是超长的文本.比如开发一套旅游信息系统,每一个景点都有丰富的图片.音像资料和大量的文字介绍.这就要求后台数据库要有存储这些数据的能力.ORACLE公司在其Oracle8i中通过提供LOB字段实现了该功能. 在ORACLE数据库中,LOB大对象类型是用来存储大量的二进制和文本数