2010-04-22 118 views
1

我創建了全局臨時表。當我作爲單獨的腳本執行代碼時,它工作正常。但是當我將它作爲TOAD中的單個腳本執行時,則不會創建任何記錄。只有一個空的全球臨時表。oracle全局臨時表

例如。

CREATE GLOBAL TEMPORARY TABLE TEMP_TRAN 
(
COL1 NUMBER(9), 
COL2 VARCHAR2(30), 
COL3 DATE 
) ON COMMIT PRESERVE ROWS 
/

INSERT INTO TEMP_TRAN VALUES(1,'D',sysdate); 
/
INSERT INTO TEMP_TRAN VALUES(2,'I',sysdate); 
/
INSERT INTO TEMP_TRAN VALUES(3,'s',sysdate); 
/
COMMIT; 

當我一次運行上面的代碼一條語句它工作正常。但是當我將它作爲腳本執行時,它運行良好,但臨時表中沒有記錄。

任何人都可以幫助我嗎?

回答

2

由於您明確指出ON COMMIT PRESERVE ROWS,行似乎「消失」的唯一原因是TOAD正在使用多個會話(即您正在使用會話A執行腳本並使用會話B查詢表 - - 這將看到一個空表)。

我不使用蟾蜍很多,但我知道你可以用這個工具打開幾個獨立的會話。

如果在提交後立即將查詢SELECT * FROM TEMP_TRAN;置於腳本末尾,會發生什麼情況?

+1

Toad在後臺會話中運行一些腳本,以便在該會話退出後插入的行「消失」。 在SQL * Plus中嘗試它,你應該看到預期的行。 – 2010-04-22 14:38:56

+0

它顯示記錄然後 – niceApp 2010-04-22 14:45:15

+0

當我把查詢SELECT * FROM TEMP_TRAN;在提交之後立即結束我的腳本,記錄顯示出來。 – niceApp 2010-04-22 14:48:07

0

有時,您需要刷新Toad中的數據顯示,以便顯示錶格內數據頁面下的更改。