oracal 临时表怎么创建

解决方案 »

  1.   


    临时表:只在会话期间或在事务处理期间存在的表.
       临时表在插入数据时,动态分配空间 
       create global temporary table temp_dept
       (dno number,
       dname varchar2(10))
       on commit delete rows;   insert into temp_dept values(10,'ABC');
       commit;
       select * from temp_dept; --无数据显示,commit之后数据自动清除掉   on commit preserve rows:在会话期间表一直可以存在(保留数据)
       on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)
      

  2.   

      create global temporary table temp_dept
       (dno number,
       dname varchar2(10))
      

  3.   


    --事务级的 事务完成数据自动清空SQL> edi
    已写入 file afiedt.buf  1  create global temporary table test_tmp2
      2  (ip varchar2(40),host varchar2(50))
      3* on commit delete rows
    SQL> /表已创建。
    --会话级的 退出所属会话数据自动清空
    SQL> create global temporary table test_tmp
      2  (id varchar2(10), name varchar2(10))
      3  on commit preserve rows
      4  /表已创建。
      

  4.   

    [Quote=引用 3 楼 wkc168 的回复:]
    引用楼主 heng841118 的回复:
    oracal 临时表怎么创建
    SQL code--事务级的 事务完成数据自动清空SQL> edi
    已写入 file afiedt.buf  1  create global temporary table test_tmp2
      2  (ip varchar2(40),host varchar2(50))
      3*……
    [/Quote
    正解
      

  5.   

    是TEMPORARY  
    CREATE  GLOBAL  TEMPORARY  TABLE  flight_schedule  (  
         startdate  DATE,    
         enddate  DATE,    
         cost  NUMBER)  
     
    ---------------------------------------------------------------  
     
    create  proecdure  name_pro  
    as  
    str  varchar2(100);  
    begin  
    str:='CREATE  GLOBAL  TEMPORARY  TABLE  TABLENAME  ON  COMMIT  PRESERVE  ROWS  as  select  *  from  others_table';  
    execute  immediate  str;  
    end;  
    /
    深入研究:
     
    首先是创建临时表的语法: CREATE GLOBAL TEMPORARY TABLE table
    "(" column datatype [DEFAULT expr] [{ NULL | NOT NULL}] 
    [, column datatype [DEFAULT expr] [ {NULL | NOT NULL} ]... ")"
    ON COMMIT {DELETE | PRESERVE } ROWS ;
     在Oracle中,可以创建以下两种临时表:   1) 会话特有的临时表   CREATE GLOBAL TEMPORARY ( )   ON COMMIT PRESERVE ROWS;   2) 事务特有的临时表   CREATE GLOBAL TEMPORARY ( )   ON COMMIT DELETE ROWS;   CREATE GLOBAL TEMPORARY TABLE MyTempTable   所建的临时表虽然是存在的,但是如果insert 一条记录然后用别的连接登上去select,记录是空的。     --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)   --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。 
      

  6.   

    create global temporary table test(name varhcar2(20));