Oracle 會話級Session誤解

Oracle会话级临时表定义如下:

会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。

1 误解一

不知道会话什么时候结束,以为是OracleConnection.Close()时会话就结束。

实际操作过程如下:

第一步,创建一个会话级的临时表

第二步,通过程序将另一个DB的数据,插入到当前的DB;调用存储过程,处理数据。处理完后,用SELECT语句,查询数据,并显示在页面上。

实际结果:

在一个网页窗口,做完第二步后。又打开第二个窗口,做第二步。发现数量成倍增长,临时表的数据没有清空。

解决方法:

INSERT到临时表数据前,truncate 临时表EXECUTE IMMEDIATE 'TRUNCATE TABLE MY_TEST_TEMP';,这样旧的数据清掉了,而且处理后数据可以再显示在页面上。

学习资源

ORACLE Temporary Tables临时表更适合做插入和查询操作

(http://space.itpub.net/8570952/viewspace-207199#xspace-tracks)

oracle temp table

(http://www.cnblogs.com/zqmingok/archive/2009/12/17/1626667.html)

一次使用临时表优化数据处理的过程

(http://www.cnblogs.com/zqmingok/archive/2009/12/17/1626673.html)

原文地址:https://www.cnblogs.com/htht66/p/1779673.html