Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 execute immediate inside begin...end block  [new]
x17.mstu
Member

Откуда:
Сообщений: 312
Есть блок begin ...end

BEGIN
execute immediate 'ALTER TABLE p1 RENAME to p1_tmp;
execute immediate 'Create table p1 () partition py range (rep_date)';
execute immeidate 'Insert /*+ append */ into p1 ()Select * from p1_tmp';
execute immedita 'Drop table p1_tmp';
END;

Нужен ли комит после execute immeidate 'Insert /*+ append */ into p1 ()Select * from p1_tmp';?

И как сделать так чтобы если хотя бы одно выражение execute immediate не выполнилось то остальные execute immediate откатились обратно
Например если exec 1 выполнился успешно, а exec 2 не выполнился , то нужно сделать откат exec 1
16 ноя 20, 11:20    [22232701]     Ответить | Цитировать Сообщить модератору
 Re: execute immediate inside begin...end block  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
x17.mstu,

Перепутали форумную ветку? В Oracle DDL откату не подлежит. Хотите откатить alter - пишите обратный.

А вообще, озвучьте версию Oracle и что вы пытаетесь сделать. Навскидку, либо alter table .. partition by .., либо dbms_redifinition
16 ноя 20, 11:42    [22232723]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить