глобальные временные таблицы оракула - PullRequest
1 голос
/ 22 апреля 2010

Я создал глобальную временную таблицу. когда я выполняю код как отдельные сценарии, он работает нормально. но когда я выполняю его как один скрипт в TOAD, запись не создается. была только пустая глобальная временная таблица.

например.

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 ]

2 голосов
/ 22 апреля 2010

, так как вы явно указали ON COMMIT PRESERVE ROWS, единственная причина, по которой строки кажутся «исчезающими», заключается в том, что TOAD использует более одного сеанса (т.е. вы выполняете сценарий с помощью сеанса A и запрашиваете таблицу с помощью сеанса B - который будет видеть пустую таблицу).

Я не очень часто использую Toad, но я знаю, что вы можете открыть несколько независимых сессий с помощью этого инструмента.

Что произойдет, если вы поместите запрос SELECT * FROM TEMP_TRAN; в конец скрипта сразу после коммита?

0 голосов
/ 22 апреля 2010

Иногда вам необходимо обновить отображение данных в Toad, чтобы оно отображало изменения в таблице под закладкой Данные.

...