create or replace procedure SP_T1 is
Begin
Create Global temporary Table TB1(FD1 Varchar2(10));
Insert TB1 (FD1) Values ('abcd');
Return ;
end SP_T1;
-------------------------------
以上代码编译出现错误
1.DDL语句 Create等怎么在存储过程中使用? 除Execute Immediate ''外
2.使用Execute Immediate '' 创建临时表,又会 在 Insert TB1 ...编译不通过,说对象不存在
3.Create Global temporary Table 创建的临时表和Create Table 指定临时表空间有什么不同?
4.临时表有什么好的应用,象MSSQLServer那样(用过的人能对照的谈一谈)

解决方案 »

  1.   

    to bzszp(SongZip) 
    那样的话,Create Global temporary Table 创建的临时表和Create Table 指定临时表空间有什么不同?
    创建临时表的意义何在? 速度会比普通表快吗???
      

  2.   

    Oracle 的临时表 主要是对数据来说的,表是真实存在的
      

  3.   

    to guangli_zhang(广丽)这么说临时表并没有太大意义的应用了?效率是不是比一般的表快?大临时表是占用内存多呢还是临时表空间多阿?还有一个问题:存储过程中 是不是没有办法使用内部动态创建的对象,比如我使用一个序列,根据日期创建,不存在就自动创建!
      

  4.   

    to bzszp(SongZip)
    动态创建,动态使用可以啊,又出现问题了
    动态语句如何捕捉异常啊?
      

  5.   

    可以捕捉到吧
    SQL> declare
      2  vsql varchar2(200);
      3  n number;
      4  begin
      5  vsql:='select 111 from dual where 1=2';
      6  execute immediate vsql into n;
      7  exception when others then
      8    dbms_output.put_line(sqlerrm);
      9  end;
     10  /
    ORA-01403: 未找到数据PL/SQL 过程已成功完成。SQL>