Использовать временные данные внутри другой временной таблицы в Oracle 18 - PullRequest
1 голос
/ 06 мая 2019

возможно в Oracle18, использовать временную таблицу внутри другой временной таблицы? Пример ниже:

CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales 
ON COMMIT PRESERVE DEFINITION
AS
SELECT * FROM orders WHERE order_date = SYSDATE;


CREATE PRIVATE TEMPORARY TABLE ora$information 
ON COMMIT PRESERVE DEFINITION
AS
SELECT * FROM ora$ptt_today_sales WHERE customerID=5;

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Я попробовал это на Live SQL (LiveQl.oracle.com) (который - правда - работает Oracle 19c) и, как я, он работает нормально , нет проблем.

Однако второй написанный вами код не будет работать, так как имя частной временной таблицы должно начинаться с ora$ptt_, того же префикса, который вы использовали для первой таблицы.

Этот префикс определяется параметром инициализации PRIVATE_TEMP_TABLE_PREFIX. Его значение по умолчанию - ora$ptt_ (как в вашем первом выражении CREATE TABLE). Поскольку вы, скорее всего, не меняли его между этими двумя командами, используйте тот же префикс для второй таблицы.

0 голосов
/ 13 мая 2019

Спасибо за ваш ответ, наконец-то у меня есть сервер разработки, работающий в сети с запущенным v18! Хорошо, дело в том, что простой пример работает нормально, проблема в том, что я использую личную временную таблицу внутри SQL с несколькими объединениями, затем я получаю сообщение об ошибке: 00000 - «ошибка в параллельном сервере запросов% s» * Причина: сервер параллельных запросов достиг условия исключения.
В поисках этого я обнаружил, что движок оракула предполагает использовать несколько сеансов и, возможно, в одном сеансе частная временная таблица не существует. Есть ли обходной путь для этого? я должен отключить параллельное выполнение для этого запроса? спасибо! * * 1002

...