"Скажем, вы сгенерировали ddl для создания всех ваших таблиц БД и т. Д. Через Hibernate SchemaExport и т. Д. В результате вы получаете скрипт, который начинается с операторов drop в начале. Не проблема, как я этого хочу. Но выполнение этогоСценарий выдает кучу ошибок ORA-00942, работающих на базе данных Oracle. "
В идеале мы должны поддерживать нашу схему должным образом, используя рекомендации по управлению исходным кодом и управлению конфигурацией.В этом сценарии мы заранее знаем, содержит ли схема, к которой мы запускаем наши сценарии, эти таблицы.Мы не получаем ошибок, потому что мы не пытаемся удалить таблицы, которые не существуют.
Однако это не всегда возможно сделать.Один альтернативный подход состоит в том, чтобы иметь два сценария.Первый сценарий просто содержит операторы DROP TABLE, которому предшествует дружественный
PROMPT It is safe to ignore any ORA-00942 errors in the following statements
Второй сценарий содержит все операторы CREATE TABLE и выводится с помощью
PROMPT All the statements in this script should succeed. So investigate any errors
Другой вариант - использоватьсловарь данных:
begin
for r in ( select table_name from user_tables )
loop
execute immediate 'drop table '||r.table_name
||' cascade constraints';
end loop;
end;
Будьте осторожны с этим.Это ядерный вариант, и он опустит каждую таблицу в вашей схеме.