全局临时表自动处理数据:
drop table ljb_tmp_session; create global temporary table ljb_tmp_session on commit preserve rows as select * from dba_objects where 1=2; select table_name,temporary,duration from user_tables where table_name='LJB_TMP_SESSION'; drop table ljb_tmp_transaction; create global temporary table ljb_tmp_transaction on commit delete rows as select * from dba_objects where 1=2; select table_name, temporary, DURATION from user_tables where table_name='LJB_TMP_TRANSACTION'; insert all into ljb_tmp_transaction into ljb_tmp_session select * from dba_objects; select session_cnt,transaction_cnt from (select count(*) session_cnt from ljb_tmp_session), (select count(*) transaction_cnt from ljb_tmp_transaction); commit; select session_cnt,transaction_cnt from (select count(*) session_cnt from ljb_tmp_session), (select count(*) transaction_cnt from ljb_tmp_transaction); select session_cnt,transaction_cnt from (select count(*) session_cnt from ljb_tmp_session), (select count(*) transaction_cnt from ljb_tmp_transaction);
不同session数据独立:
drop table ljb_tmp_session; create global temporary table ljb_tmp_session on commit preserve rows as select * from dba_objects where 1=2; select table_name,temporary,duration from user_tables where table_name='LJB_TMP_SESSION'; drop table ljb_tmp_transaction; create global temporary table ljb_tmp_transaction on commit delete rows as select * from dba_objects where 1=2; select table_name, temporary, DURATION from user_tables where table_name='LJB_TMP_TRANSACTION'; --不同session的例子试验基于sesssion 的临时表即可了,不用试验另外一个了。 ---连上session 1 insert into ljb_tmp_session select * from dba_objects where rownum<=10; --可以体会提交,基于session 的提交并清理数据 commit; select count(*) from ljb_tmp_session; COUNT(*) ---------- 10 ---不退出session 1,继续登录session 2 insert into ljb_tmp_session select * from dba_objects where rownum<=20; commit; select count(*) from ljb_tmp_session; COUNT(*) ---------- 20
产生日志较少: