!!!!還是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


臨時表不占用表空間,用不着非得把它刪掉

注意!

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



 
粤ICP备14056181号  © 2014-2020 ITdaan.com