时间:2021-07-01 10:21:17 帮助过:23人阅读
SQL> conn test/test Connected. SQL> desc test; Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER NAME VARCHAR2(10)
在 sys 下创建 sessione 级别的临时表
SQL> conn / as sysdba Connected. SQL> create global temporary table session_test on commit preserve rows as select * from test.test; Table created.
SQL> commit; Commit complete.
on commit preserve rows 表示创建的表是 session 级别,只要用户不退出,临时表一直有效。
SQL> select * from session_test; ID NAME ---------- ---------- 0 orcl 1 orcl 3 orcl 2 orcl
退出并重新进入,并验证表内容是否存在。
SQL> exit
……
SQL> select * from session_test; no rows selected SQL>
查看 session 级别的临时表在断开连接后,重新登录查看变为空了。
接下来创建事务级别的临时表
SQL> create global temporary table transaction_test on commit delete rows as select * from test.test; Table created.
on commit delete rows 表示创建的表是事务级别,这个临时表的作用范围只在一个事务内有效。 验证事务临时表的作用范围: 虽然是 copy 的 test.test 表,但是依然是没有数据。
SQL> select * from transaction_test; no rows selected
接下来添加数据到事务临时表 transaction_test
SQL> insert into transaction_test select * from test.test; 4 rows created. SQL> select * from transaction_test; ID NAME ---------- ---------- 0 orcl 1 orcl 3 orcl 2 orcl
如上我们将 test.test 表的内容插入到了 transaction_test 表中,然后直接查询,能查到刚刚插入的数据。
接下来提交,并查询。(提交相当于提交事务,也就是一个事务的结束)
SQL> select * from transaction_test; ID NAME ---------- ---------- 0 orcl 1 orcl 3 orcl 2 orcl SQL> commit; Commit complete. SQL> select * from transaction_test; no rows selected
由此可见
会话级别的临时表,只要会话不断开,临时表一直有效,会话断开后,临时表内容清空; 事务级别的临时表,只在一个事务内有效,事务提交后,临时表内容清空。
Oracle临时表的功能与应用
标签:bcg iis ORC 功能 内容 icc int ota test