oracle全局临时表
问题描述:
我创建了全局临时表。当我作为单独的脚本执行代码时,它工作正常。但是当我将它作为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;
当我一次运行上面的代码一条语句它工作正常。但是当我将它作为脚本执行时,它运行良好,但临时表中没有记录。
任何人都可以帮助我吗?
答
由于您明确指出ON COMMIT PRESERVE ROWS
,行似乎“消失”的唯一原因是TOAD正在使用多个会话(即您正在使用会话A执行脚本并使用会话B查询表 - - 这将看到一个空表)。
我不使用蟾蜍很多,但我知道你可以用这个工具打开几个独立的会话。
如果在提交后立即将查询SELECT * FROM TEMP_TRAN;
置于脚本末尾,会发生什么情况?
答
有时,您需要刷新Toad中的数据显示,以便显示表格内数据页面下的更改。
Toad在后台会话中运行一些脚本,以便在该会话退出后插入的行“消失”。 在SQL * Plus中尝试它,你应该看到预期的行。 – 2010-04-22 14:38:56
它显示记录然后 – niceApp 2010-04-22 14:45:15
当我把查询SELECT * FROM TEMP_TRAN;在提交之后立即结束我的脚本,记录显示出来。 – niceApp 2010-04-22 14:48:07