oracle创建会话级别的临时表

create global temporary table myTable on commit preserve rows 
as select e.empno,e.ename,e.deptno from emp e;
这样写就可以.
原因: 创建临时表时,如果指定on commit preserve rows,则是会话级别临时表,也就是说会话结束后,临时表中的记录会清空.
如果不指定,则默认为on commit delete rows,这是事务级别临时表,该事务结束后记录便会清空.
执行ddl语句,如create,alter,drop语句时,oracle会首先将当前事务中包含的已经执行了的dml语句提交,然后将ddl语句当作一个新的只含一条语句的事务执行并提交.
你创建的是事务级别的临时表,语句结束后事务提交,因此记录没了.
示例:
     CREATE GLOBAL TEMPORARY  TABLE ass_stat_percent ON COMMIT PRESERVE ROWS as 
(select province,city ,req_time as reqTime,round(sorting_correct_count/decode(sorting_totle_count,0,1,sorting_totle_count),5) as sortingCorrectPercent
        from (select g.province as province,
                 g.city as city,
                 trunc(g.req_time, 'dd') as req_time, 
                  sum(CASE
                               WHEN g.sort_right = 1 then
                                1
                               ELSE
                                0
                             END) as SORTING_CORRECT_COUNT,
                 count(*) as SORTING_TOTLE_COUNT
        from ass_req_log g
        group by g.province,g.city,trunc(g.req_time, 'dd') ))      


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值