在过程外面sql*plus里创建即可。

解决方案 »

  1.   

    http://blog.csdn.net/caff/archive/2004/11/07/170980.aspx
      

  2.   

    on commit PRESERVE rows as
    select distinct loaddate from o_t_cigsum_gen@ol_jlb where loaddate > v_maxloaddate and loaddate < p_todate;
    用的什么版本?Oracle好像不支持distinct关键字吧
      

  3.   

    str:='create global temporary table tmp_table
    on commit PRESERVE rows as
    select distinct loaddate from o_t_cigsum_gen@ol_jlb where loaddate > v_maxloaddate and loaddate < p_todate;'exec immediate str;用动态语句应该可以;
      

  4.   

    有两个法子:
    1.在设计期就设计和创建好临时表,不要在存储过程中创建,更不用在存储过程中Drop。
    2.在存储过程中用Exec Immediate,指定DDL语句。
      

  5.   

    用动态语句 execute immediate 'create global temporary table tmp_table
    on commit PRESERVE rows as
    select distinct loaddate from o_t_cigsum_gen@ol_jlb where loaddate > v_maxloaddate and loaddate < p_todate'
      

  6.   

    但是必須要考慮是否存在的問題..........
    execute immediate 'drop table tmp_table';
    execute immediate 'create global temporary table tmp_table
    on commit PRESERVE rows as
    select distinct loaddate from o_t_cigsum_gen@ol_jlb where loaddate > v_maxloaddate and loaddate < p_todate';
    ..................