Нельзя использовать таблицу внутри оператора CTAS, если эта таблица была изменена в текущей транзакции.
Вы можете следовать предложению, приведенному в описании ошибки:
32462, 0000, "невозможно использовать объект, измененный в текущей транзакции"
// * Причина: объект изменение в текущей транзакции было обнаружено при создании
// закрытой временной таблицы в памяти с использованием CREATE TABLE AS SELECT (CTAS).
// * Действие: После разделения оператора CTAS на CREATE TABLE INSERT SELECT .
create table temp1 (name varchar2 (32), dept varchar2 (4), hired date);
insert into temp1 values ('A', 'HR', sysdate);
create private temporary table ora$ptt_1 as
select * from temp1 where dept ='HR' and name ='A';
Error report -
ORA-32462: cannot use an object modified in current transaction
На этом этапе обратите внимание, что в этом особом случае оператор CREATE PRIVATE TEMPORARY ...
не выдает неявный COMMIT
, как обычно делают все другие операторы DDL. Попробуйте в другом сеансе:
select * from temp1;
no rows selected
Вернуться к первому сеансу:
create private temporary table ora$ptt_1 (name varchar2 (32), dept varchar2 (4), hired date);
Private TEMPORARY created.
insert into ora$ptt_1
select * from temp1 where dept ='HR' and name ='A';
1 row inserted.