Ответ на ваш ближайший вопрос заключается в том, что вы получаете ORA-01031: insufficient privileges
, поскольку у вашего пользователя есть привилегия CREATE TABLE, предоставленная через роль: модель безопасности Oracle применяет правило, согласно которому мы не можем использовать привилегии, предоставляемые через роли в PL / SQL.,Поэтому вам нужно, чтобы ваш администратор БД предоставил привилегию CREATE TABLE непосредственно вашему пользователю.
Или вам?
Потому что то, что вы пытаетесь сделать, не имеет смысла в Oracle.В Oracle глобальные временные таблицы являются постоянными структурами;это просто данные в них, которые являются временными.Итак, правильное решение - создать таблицу один раз с помощью обычного сценария DDL, как и любой другой объект базы данных.Затем вы можете просто вставить в глобальную временную таблицу, как вам нужно.
Вы не первый человек на этом сайте, который совершил эту ошибку ( прочитайте эту соответствующую ветку ).Часто это происходит из-за того, что люди приходят из другой базы данных, такой как SQL Server, которая имеет конструкцию, называемую «временная таблица», которая на самом деле отличается от глобальных временных таблиц Oracle.Если это ваш сценарий, то вас заинтересует новая функция Oracle 18c, которая называется Private Temporary Tables.Они в точности аналогичны временным таблицам SQL Server. Узнать больше .