回复人: njhart2003() ( ) 信誉:100 
  为什么不用临时表?!
我做过程的目的就是让它创建一个表,然后从系统表内查询记录添加给表。回复人: SmallHand(火龍) ( ) 信誉:101 
创建表后commit一下就好了!
我试过了,不行

解决方案 »

  1.   

    添加"commit;"是能解决问题,但这动态创建表的做法不到万不得已,不要这么做,性能太低...强烈建议楼主采用临时表!
      

  2.   

    1.如果添加"commit;"还是不行,
    那估计你的存储过程缺少“authid current_user”
    根本没通过建表权限的审核。估计你的过程是以定义者(definer)权限执行的,
    凡是在存储过程里有动态创建对象的,都要以当前用户权限(current_user)执行2.建议用临时表
      

  3.   

    To:回复人: njhart2003() ( ) 信誉:100 
    临时表同样满足你的要求啊...   不明白,请在详细说一下
      

  4.   

    回复人: njhart2003() ( ) 信誉:100 非常感谢你1.如果添加"commit;"还是不行,
    那估计你的存储过程缺少“authid current_user”
    根本没通过建表权限的审核。估计你的过程是以定义者(definer)权限执行的,
    凡是在存储过程里有动态创建对象的,都要以当前用户权限(current_user)执行不是这个问题,上次发贴我问的是这个问题,当时也是你回的,所以俺后来加上了
      

  5.   

    1.先在你的数据库里建一个临时表语法可参考相关资料,举例(事务级的临时表):
    create global temporary table FC_TBSTRU_temp(
    tbname     varchar2(50)  not null,
    fdname     varchar2(50)  not null,
    xlh        number
    );2.在你的存储过程里把相关统计资料插入该临时表中,该临时表的记录对存储过程来说似乎是“专用”的,并且数据一直保存到你"commit;"或者"rollback;"为止,所以下次调用存储过程时,该临时表自动清空....3.我说的不清楚,你可以看看相关资料,查查临时表的用法....
      

  6.   

    临时表的数据只在用户会话期间存在,当会话完成后就自动清除。
    这不符合我建表的需求,我所须创建的表是数据表,还要在程序中作为一张表被调用,而且我认为在oracle数据库中的临时表和在sqlserver中一样,退出存储过程后就不存在了。请大家帮帮我
      

  7.   

    你可以把表结构保留,每次进来先truncate一下表,把数据清空