没有必要动态创建临时表!跟sql的有区别。
oracle的临时表,是用完后,不自动drop。

解决方案 »

  1.   

    你的问题在于 
    临时表 是在过程里面动态创建的 
    后面紧接着 delete from Righttable; 
    这样编译肯定会找不到Righttable表,因为存储过程还没有执行。在外面创建临时表即可。
      

  2.   

    那样的话所有使用临时表的语句,都是用动态sql
    而且最后还要execute immediate 'drop table ...';
      

  3.   

    我先创建好临时表后,在向里面插入值,可是用select语句却不能检索到这些值,为什么?
      

  4.   

    存储过程外边?
    执行commit了没有?
      

  5.   

    那就是啊。commit以后,数据就自动清空了!
      

  6.   

    create global temporary table temp_table
    (
       col1 type1,
       col2 type2,
       ...
    ) [on commit (preserve rows | delete rows) ]
    如果指定preserve rows则数据会在用户关闭连接是自动删除
    如果指定delete rows 则数据会在用户提交数据(commit)的时候自动删除如果什么都不指定. 默认使用on commit delete rows.只需要创建一次可以多处,多次,不同的session同时使用,能够做到互补干扰