Быстрая очистка таблиц и EXECUTE IMMEDIATE.

добавлено: 18 фев 19
понравилось:0
просмотров: 1030
комментов: 0

теги:

Автор: Myp3_u_K

Чалышев Максим Михайлович
SQL. 5 дней, которые изменят твою жизнь.

Введение


Для быстрой очистки таблиц в Oracle применяется специальный оператор TRUNCATE TABLE.
Данный оператор является оператором DDL, оператором мгновенного выполнения и поэтому для его вызова нам потребуется оператор динамического SQL.
Динамический SQL используется в ORACLE с помощью команды EXECUTE IMMEDIATE
Теория и практика
Оператор EXECUTE IMMEDIATE выполняет динамический оператор SQL или анонимный PL / SQL блок. В нашем случае мы будем использовать EXECUTE IMMEDIATE для работы с TRUNCATE TABLE.
Текст динамического SQL заключается в кавычки.
Оператор TRUNCATE TABLE используется для быстрого удаления всех записей из таблицы в Oracle. По результату аналогичен DELETE, без условий WHERE, но выполняется гораздо быстрее.
Синтаксис
TRUNCATE TABLE table_name
  [ PRESERVE MATERIALIZED VIEW LOG | PURGE MATERIALIZED VIEW LOG ]
  [ DROP STORAGE | REUSE STORAGE ] ;


Здесь
table_name
Таблица, которую вы хотите очистить.
PRESERVE MATERIALIZED VIEW LOG
Необязательный параметр. Если он задан, то MATERIALIZED VIEW LOG будет сохранено, когда таблица очищается. Это значение по умолчанию.
PURGE MATERIALIZED VIEW LOG
Необязательный параметр. Если он задан, то MATERIALIZED VIEW LOG будет очищен, когда таблица очищается.
DROP STORAGE
Необязательный параметр. Показывает, что всё хранилище очищающихся высвобождено, за исключением пространства, которое было выделено в MINEXTENTS.
REUSE STORAGE
Необязательный параметр. Если он задан, строки останется распределенными в таблице.
TRUNCATE TABLE test1;

Этот пример очистит таблицу test1, и удалит все записи из этой таблицы.
Было бы равносильно следующему предложению DELETE в Oracle:
DELETE FROM test1;

Оба эти примера приведут к тому, что все данные из таблицы test1 удаляется.
Иногда этот оператор не может быть выполнен без применения EXCUTE IMMEDIATE
Поэтому следует выполнять следующую команду
EXECUTE IMMEDIATE 'TRUNCATE TABLE test1'

Этот пример очистит таблицу с именем test1.
Важные замечания
TRUNCATE TABLE выполняется сразу, изменения сразу будут базе, выполнения команды commit не потребуется.
При выполнении операции TRUNCATE TABLE, откат это операции будет невозможен.
Так же выполнении операцииTRUNCATE TABLE, нельзя будет извлечь данные из таблицы с помощью ретроспективного запроса.
Перед именем таблицы можно указать имя схемы, где создана данная таблица
Пример
TRUNCATE TABLE myscheme.test1;

Для выполнения оператора в другой схеме, системный администратор должен выдать вам права DROP ANY TABLE

Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии