!!!!还是oracle在存储过程中创建临时表的问题!!!!


各位:
  前面我问的问题,有位老凶说用以下办法:
   在Oracle8i中,可以创建以下两种临时表:
   1。会话特有的临时表
      CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
      ON COMMIT PRESERVE ROWS;
 
   2。事务特有的临时表
      CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
     ON COMMIT DELETE ROWS; 

   但是,我在Oracle8i的存储过程只要写create语句,就会报错,请问是什么原因,
   创建临时表是不是与Oracle的配置有关系!!!谢谢,还有,我现在用的是,创建正式
   表的方法。
   

10 个解决方案

#1


在8i以前的版本中,存储过程中不能用CREATE TABLE这样的DDL语句.8i还没试过, 你的错误信息是什么?

#2


我不知道错误信息,只是用Pl/SQL编译时就出错。说什么类似与‘在出现Create语句之前的....'问题.谢谢!!!

#3


execute immediate 'create ........';

#4


不推荐在ORACLE中这么建临时表。

如果你是在SQL*PLUS下,出错以后可以用SHOW ERROR来察看错误信息。

#5


oracle的临时表,不同于sqlserver的临时表,会话结束时自动删除,
oracle的临时表是全局临时表,所有的连接到一个模式的回话都是用一个相同的临时表,所以它会始终保存,所以应该像建立一般的表的方法一样,提前建立好,不然的话,每次执行或联结都建立在删除回出问题的,比如,我健力的临时表,并插入数据,你进来后给我删除(drop)掉了,对我的运行有影响的。

#6


http://www.csdn.net/expert/topic/296/296784.shtm
那里说得很多,具体看看好吗?方法也很多。喜欢那个用那个好了。

#7


可能是权限不够。

#8


ORACLE的存储过程中确实不能直接用CREATE语句, 主要的原因我想是因为CREATE这种DDL语句是无法ROLLBACK的,而存储过程本身是可以ROLLBACK. 想一想如果你执行了一个存储过程(其中创建了一个表),然后因为某种原因想ROLLBACK的话,那数据库该怎么做?是删除这个表呢?还是不删除?

#9


ORACLE中的临是表创建完之后,只管当一个正常的表用就行了,会话结束后,表内的数据会自动清除,而且别人的会话中也看不到你会话中的插入的数据。

#10


临时表不占用表空间,用不着非得把它删掉
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



猜您在找
在oracle存储过程中创建临时表 存储过程中,如何动态创建临时表 ORACLE8存储过程中能否创建临时表 oracle存储过程中使用临时表 Oracle存储过程中使用临时表
智能推荐
 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告