Суббота
20.04.2024
16:49


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » ORACLE » ORACLE, PL/SQL

Временные таблицы в Oracle (GLOBAL TEMPORARY TABLE) (Часть 2)

Создание временной таблицы

 

Синтаксис для создания временных таблиц практически аналогичен синтаксису для создания регулярных таблиц, но есть некоторые операторы, которые используются только для временных таблиц:

ОN COMMIT DELETE ROWS используется во временных таблицах, данные которой существуют в пределах одной транзакции.

Oracle удаляет все строки - все данные из временной таблицы после завершения транзакции, после выполнения команды COMMIT.

Данная инструкция подразумевается по умолчанию, то есть при создании временной таблицы - она всегда будет ОN COMMIT DELETE ROWS

ОN COMMIT PRESERVE ROWS используется во временных таблицах, данные которой существуют в пределах одной сессии. СУБД Oracle удаляет все строки из временной таблицы - очищает таблицу после завершения сессии.

 

Примеры

 

Данные примеры продемонстрируют создание и  использование временных таблиц, отличия временных таблиц ОN COMMIT DELETE ROWS и ОN COMMIT PRESERVE ROWS,  отличие временных таблиц от таблиц регулярных.

 

Все примеры построены на основе стандартной демонстрационной схемы SCOTT БД ORACLE

  Пример создании временной таблицы:

 

CREATE GLOBAL TEMPORARY TABLE scott.temp_dept

(          

deptno NUMBER(2,0),      

dname VARCHAR2(14)          

)     ON COMMIT PRESERVE ROWS;

 

Данный пример демонстрирует создание временной таблицы, данные которой, относятся к сессии.

 

  Пример создания временной таблицы с использованием подзапроса

 

CREATE GLOBAL TEMPORARY

TABLE scott.min_salesemp  

ON COMMIT PRESERVE ROWS   

AS SELECT * FROM scott.emp WHERE sal < 2000;

 

Данный пример демонстрирует создание временной таблицы на основе подзапроса, заполненные данные для этой таблицы актуальны только для текущей сессии. Если попробовать прочитать таблицу min_salesemp из другой сессий, то таблица будет пустой.

 

  Пример создания временной таблицы с объектным типом колонки

CREATE TYPE scott.person_t AS OBJECT (NAME VARCHAR2(100), ssn NUMBER);

CREATE GLOBAL TEMPORARY TABLE scott.tmp_obj    

(    

person scott.person_t      

)    

ON COMMIT DELETE ROWS;

Этот пример демонстрирует, что использование объектных типов данных, вполне правомерно для временных таблиц. 

 

  Использование индексов во временных таблицах

 

CREATE GLOBAL TEMPORARY TABLE scott.city_dept    

(      

  deptno NUMBER(2,0),

  dname VARCHAR2(14),

  CONSTRAINT pk_city_dept PRIMARY KEY (deptno)

)

ON COMMIT DELETE ROWS; 

COMMENT ON COLUMN scott.city_dept.deptno IS 'DEPARTMENT NUMBER';

COMMENT ON COLUMN SCOTT.CITY_DEPT.DNAME  IS'DEPARTMENT NAME';

CREATE UNIQUE INDEX scott.pk_city_dept_dname ON scott.city_dept (deptno,dname); 

CREATE INDEX scott.idx_dname ON scott.city_dept (dname);

 

Данный пример показывает, что во временных таблицах можно использовать индексы и ограничения - CONSTRAINT , как и в регулярных таблицах.

Категория: ORACLE, PL/SQL | Добавил: Akarak (03.08.2011)
Просмотров: 13761 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
ORACLE, PL/SQL [36]
Скрипты DDL [3]
Скрипты по управлению объектами
Встроенные функции SQL [2]
Встроенные функции SQL

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2024
    Используются технологии uCoz