v_sql:='CREATE TEMPORARY TABLE ColToRow('||
  'dept_name varchar2(50),'|| --部门名称
  'new_alarm integer default 0,'||--新警情数量
    'disposed integer default 0,'||--已经受理的数量
    'fbk_ontime integer default 0,'||--按时反馈的数量
    'fbk_late integer default 0,'||
    'finish_ontime integer default 0,'
    'finish_late integer default 0)';
--创建临时表的sql如上
1.
对非全局的临时表:
oracle的临时表和mssql的临时表的作用域和生命周期是不是一样的呢?mssql只对创建它的连接(会话)可用,其他会话可以创建相同名字的临时表而不会互相冲突 2.oracle是否存在和临时表在作用域和生命周期都差不多的视图??
我想希望能有某种视图只对创建它的会话才是可用的,其他会话也可以创建相同名字的临时视图,没有的话要怎么样才可以实现?(过一段时间,可能会自我嘲笑问这样的问题-_-)

解决方案 »

  1.   

    ORACLE的临时表分为会话级和事务级
      

  2.   

    加上ON COMMIT PRESERVE ROWS
      

  3.   

    呵呵
    我觉得加ON COMMIT DELETE ROWS更符合我的要求
      

  4.   

    --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)   --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。截断表后会不会删除临时表?还是要我用代码drop table来删除?
      

  5.   

    不会删除表只是其他会话看不到你插入的数据但是我想问下你 你用CREATE TEMPORARY TABLE可以创建临时表  不加GLOBAL吗?我用的是9i
      

  6.   

    哦,要的,我漏了.
    所有会话不用了临时表系统会自动删除它的,要不临时表就没有了"临时"的意义.---只是其他会话看不到你插入的数据
    现在想讨论一下这种情况:
    当一个会话插入了一批记录,然后select * from Temp返回了这批记录给前台
    然后另外一个会话也插入了一批记录,然后也进行select * from Temp返回的结果也只能是当前会话插入的吗?第一个会话插入的记录不会查出来吗?如果这样的话就求神拜佛了,我处理起来会方便好多
      

  7.   

    呵呵   NinGoo还是那个NinGoo呵呵